Hay dos posibilidades
Olvidó poner el %id%
en la jstack
llamada.
jstack %id% > jstack.txt
Entonces, todo el archivo por lotes correcto debe ser:
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
Y / o 2. Lo colocó en el código (y olvidó decirnos en la pregunta) pero cuando ejecutó el archivo por lotes presionó la tecla Intro en lugar de escribir una ID (digamos 1234).
Lo que está sucediendo es el resultado de estos dos errores:
jstack
se supone que debe llamarse con la identificación que usted proporciona.
Pero en su caso (de acuerdo con el código que proporcionó en la pregunta) lo llamó sin ninguna variable. Tu escribiste:
jstack > jstack.txt
Entonces, cuando ejecuta jstack
sin variable, genera lo siguiente:
Terminate batch file Y/N?
Su segundo error es que haya pulsado Intro en lugar de dar un valor cuando el programa le preguntó: Enter ID:
. Si hubiera puesto una ID en este punto, digamos 1234, la %id%
variable se convertiría en ese valor, en nuestro caso 1234. Pero NO proporcionó un valor y en su lugar presionó Enter. Cuando no le das ningún valor a la variable, y si esa variable no se configuró en otra cosa antes, ¡entonces la variable %id%
se configura según el indicador del set
comando! Así que ahora %id%
está configurado para Enter ID:
que se repita en su pantalla como se solicitó en el archivo por lotes ANTES de llamar al jstack.
Pero sospecho que TENÍA el jstack %id% > jstack.txt
código de su archivo por lotes con el %id
(y lo omitió por error de la pregunta), y que presionó enter sin escribir una identificación. El programa por lotes se hizo eco de la identificación, que ahora es "Ingresar ID:", y luego ejecutójstack Enter ID: > jstack.txt
Jstack se hizo eco de la entrada, encontró un error y le pidió que terminara.
Y todo esto fue escrito en el archivo jstack.txt.