elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1]
1  Programación / Scripting / Re: Redirigir el resultado de un comando a una variable ¿Se puede? ¿Cómo? [BATCH] en: 16 Noviembre 2014, 18:17 pm
Buenas!

1) Te están pidiendo que listes archivos, no que almacenes el resultado de la búsqueda en una variable,
    sé que intentas ser eficiente pero en Batch no puedes serlo, así que mi consejo es que no hagas más de lo necesario, es decir, aquello que te piden que hagas.

2) Lamentablemente Batch no llega ni a poder calificarse como "lenguaje de programación", y las variables multi-linea no es una característica soportada (de forma natural) en Batch.

3) Entiendo perfectamente esto, pero estoy evaluando el código con unos compañeros y algunos no manejan nada de inglés.


1) Sí, entiendo eso. Lo que pasa es que dentro de mi cabeza no se me ocurría otra posible solución mas que, después de obtener el resultado de la búsqueda, dejarlo almacenado en algún lugar al que pueda recurrir a la hora de realizar la opción 2.

2) Estuve leyendo tiempo después de haber posteado eso y caí en cuenta de eso.

Con el código que me preparó (muy amable de su parte, muchísimas gracias) puedo ejecutar la primer actividad, y al hacer la segunda solicita detallar dónde y con qué nombre va a ir el archivo ¿Verdad? Bueno, pues he ingresado C:\prueba1.txt y en C: no quedó ningún .txt con esa información. Lo más probable es que yo no esté entendiendo el código, porque a mitad de este año he empezado a programar con batch y, por ej., no conozco el comando choice. Hasta ahora, en las clases, solo hemos trabajado con if y de hecho la intención era realizar este ejercicio con if. Pero se me complica mucho (demasiado) la idea de anidarlos tantas veces. Es muy engorroso y es algo que suelo hacer en Pascal (otro lenguaje que estamos utilizando), pero en Pascal cuento con la ayuda de los Begin/end que puedo abrir bastantes veces uno dentro del otro. Aquí la cosa es demasiado engorrosa

Su código me ha servido para entender mejor cómo podría llegar a realizarlo, pero tampoco llego a comprenderlo totalmente. Estoy en un nivel muy inferior, demasiado.

Siguiendo la idea de hacerlo con los ifs (aunque quiero intentar entender al Choice, no me serviría para la clase), he ideado este código. Pero se ingresa a la primer opción y luego cuando ingreso a la segunda, entra nuevamente por la primera. ¿Qué hago?

Código
  1. @echo off
  2. :menu
  3. echo 1) listar archivos segun su criterio
  4. echo 2) la busqueda anterior se almacena en un archivo
  5. echo 3) copiar este archivo dentro del otro archivo de texto ingresado
  6. echo 4) salir
  7. set /p o= Elija su opcion:
  8. if (%o%==1) goto :uno else (if (%o%==2) (goto :if2) else (if (%o%==3) (goto :if3) else (if (%o%==4) (goto :cuatro) else (goto :error))))
  9.  
  10. :uno
  11. del /s C:\artemp1.txt >> c:\artemp2.txt
  12. set /a c=1
  13. set /p nar= Ingrese el nombre del archivo:
  14. set /p exar= Ingrese su extension, si no conoce ecriba un arterisco:
  15. dir /s C:\*%nar%*.%exar% >> c:\artemp1.txt
  16. type c:\artemp1.txt
  17. cls
  18. goto :menu
  19.  
  20. :dos
  21. set /a c=2
  22. set /p noar1= Escriba el nombre del archivo de texto donde se va a guardar:
  23. type c:\artemp1.txt >> c:\%noar%.txt
  24. cls
  25. goto :menu
  26.  
  27. :tres
  28. set /p nombre2= Escriba el nombre del segundo archivo de texto destino:
  29. type C:\%nombre1%.txt >> c:\%nombre2%.txt
  30. cls
  31. goto :menu
  32.  
  33. :cuatro
  34. echo se saldra del programa
  35.  
  36. :error
  37. echo Ingreso algun nro fuera del rango o  intento realizar las opciones 2 y 3 sin hacer primero la 1 o la 2, respectivamente
  38. cls
  39. goto :menu
  40.  
  41. :if2
  42. if (%c%==1) goto :dos else(goto :error)
  43.  
  44. :if3
  45. if (%c%==2) goto :tres else(goto :error)

La idea es que una vez que se ingrese a la primera opción, esta determine el resultado de la búsqueda (según los parámetros ingresados) y los guarde en un archivo temporal (el cual es borrado cada vez que se inicia este bloque :uno). De manera que si por alguna razón quisiera volver a entrar en la opción uno, muestre el resultado de la última búsqueda realizada y no de las anteriores. Ahora, si quisiese ingresar a la segunda opción la idea es que se evalúe si lo elegido es un 2. Si es asi, nos envía a otro bloque donde hay OTRO if el cual determina si se ejecutó o no la primera opción (por medio de una variable "contadora"), si fuese así, nos enviaría al bloque :dos (el cual tiene el bloque por el cual se guarda en un archivo con nombre a gusto del usuario. La tercera opción consiste en copiar el contenido del mismo archivo creado en la dos, a otro archivo,  y la manera de evaluar si se ejecutó la segunda opción ya es la misma que se utilizó en la segunda para determinar si se ejecutó la primera.

No entiendo qué hacer y traté de ser lo más claro posible en la explicación del algoritmo. Nuevamente, soy muy torpe con estas cosas. Es el segundo año que tengo programación y vengo de programar en pascal cosas tontas.


2  Programación / Scripting / Redirigir el resultado de un comando a una variable ¿Se puede? ¿Cómo? [BATCH] en: 16 Noviembre 2014, 15:52 pm
Buenas, gente. Es la primera vez que posteo algo en este foro así que no sé si lo estoy haciendo en la sección correspondiente y de la manera correcta.

Tengo un problema con un ejercicio de batch para el colegio secundario que estoy cursando:

Tengo un ejercicio donde tengo que condicionar a elegir entre 4 opciones. La primera es listar archivos según un criterio ingresado por el usuario; la segunda es copiar el resultado de la primera opción a un archivo de texto; la tercera es copiar el contenido de ese archivo de texto de la segunda opción a otro archivo de texto y la cuarta opción simplemente quitea el programa.

Como verán, la realización de las opciones que siguen a la primera están obligadas a realizarse ÚNICAMENTE si la primera opción se ha ejecutado antes. Eso no creo que sea un problema, con una variable adicional que cambie de valor una vez que se ejecuta la primera opción.
No obstante, el problema está en la primer opción. Ya tengo la estructura que evalúa la opción y lleva a la subestructura donde se pide que ingrese un nombre y una extensión para buscar archivos con esas características y ya lo he probado, es decir, se devuelve el resultado que busco. Pero ¿cómo hago para que éste resultado se almacene en una variable? ¿Se puede? De poderse, mi idea sería que para la segunda opción solo tendria que poner algo como "echo %resultado% >> archivo.txt"

Puedo hacer eso? si no puedo, qué otra cosa me recomiendan?. Muchísimas gracias!

Esta es la estructura que llevo hasta ahora (tiene declarada unicamente la subestrcutura de la primer opcion)

Código
  1. @echo off
  2. :menu
  3. echo 1) listar archivos segun su criterio
  4. echo 2) la busqueda anterior se almacena en un archivo
  5. echo 3) copiar este archivo dentro del otro archivo de texto ingresado
  6. echo 4) salir
  7. set /p o= Elija su opcion:
  8. if (%o%==1) goto :uno else(
  9. if (%o%==2) and (%x%==1) goto :dos else (
  10. if (%o%==3)  and (%x%==1) goto :tres else(
  11. if (%o%==4) goto :cuatro)))
  12.  
  13. :uno
  14. set /a x=1
  15. set /p nar= Ingrese el nombre del archivo:
  16. set /p exar= Ingrese su extension, si no conoce ecriba un arterisco:
  17. dir /s C:\*%nar%*.%exar% >
  18. cls
  19. goto :menu

 :huh: :huh: :huh:
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines