Cita de: LoqiRex2 en 16 Noviembre 2014, 18:17 PM
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
Lo que ocurre es que en el bloque de la opción [2] pido el nombre del archivo, no pido la ruta completa ni tampoco la extensión, el archivo se guarda con el nombre especificado en el directorio de trabajo actual.
El código que escribí es un sólo ejemplo para orientarte y está abierto a modificaciones para adaptarlo a tus necesidades.
Cita de: LoqiRex2 en 16 Noviembre 2014, 18:17 PMse ingresa a la primer opción y luego cuando ingreso a la segunda, entra nuevamente por la primera.
El problema, obviamente, está aquí:
CitarCódigo (dos) [Seleccionar]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))))
Estás intentando simular un 'ElseIf', pero esta es otra característica que no está soportada en Batch (aunque por otro lado si que soporta un 'And', pero de forma invisible).
No es necesario que anides los ifs para conseguirlo.
Cita de: LoqiRex2 en 16 Noviembre 2014, 18:17 PM¿Qué hago?
Tienes tres opciones:
1) usar múltiples If:
Código (dos) [Seleccionar]
If "%o%" EQU "1" (Goto :uno)
If "%o%" EQU "2" (Goto :dos)
etc...
2) Usar el comando Choice como ya mostré.
3) Omitir el uso de If y llamar al método deseado de forma dinámica:
Código (dos) [Seleccionar]
@echo off
:menu
cls
echo 1) listar archivos segun su criterio
echo 2) la busqueda anterior se almacena en un archivo
set /p "o= Elija su opcion:"
Call :%o%
Goto :Menu
:1
Echo Soy el método 1
pause
goto :EOF
:2
Echo Soy el método 2
pause
goto :EOF
saludos