Tengo un archivo .bat de Windows que me gustaría aceptar la entrada del usuario y luego utilizar los resultados de esa entrada como parte de la llamada a comandos adicionales.
Por ejemplo, me gustaría aceptar un ID de proceso del usuario, y luego ejecutar jstack contra ese ID, poniendo los resultados de la llamada jstack en un archivo. Sin embargo, cuando intento esto, no funciona.
Aquí'está el contenido de mi archivo bat de ejemplo:
@echo off
set /p id=Enter ID:
echo %id%
jstack > jstack.txt
y esto es lo que aparece en jstack.txt:
Introduzca el ID: ¿Terminar el trabajo por lotes (S/N)?
Prueba esto:
@echo off
set /p id="Enter ID: "
A continuación, puede utilizar %id%
como parámetro de otro archivo por lotes como jstack %id%
.
Por ejemplo:
set /P id=Enter id:
jstack %id% > jstack.txt
La sintaxis es la siguiente set /p variable=[cadena]
Consulte http://commandwindows.com/batch.htm o http://www.robvanderwoude.com/userinput.php para profundizar en la introducción de datos por parte del usuario con las diferentes versiones de los archivos por lotes del sistema operativo Windows.
Una vez que haya establecido su variable, puede utilizarla de la siguiente manera.
@echo off
set /p UserInputPath=What Directory would you like?
cd C:\%UserInputPath%
nota la sintaxis %VariableName%
.
No estoy seguro de si este es el caso para todas las versiones de Windows, sin embargo en la máquina XP que tengo, tengo que usar lo siguiente:
set /p Var1="Prompt String"
Sin la cadena de consulta entre comillas, obtengo varios resultados dependiendo del texto.