Есть две возможности.
Вы забыли поставить %id%
в вызове jstack
.
jstack %id% > jstack.txt
Таким образом, весь правильный пакетный файл должен быть:
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
И / или 2. Вы поместили его в код (и забыли сообщить нам вопрос), но когда вы запустили пакетный файл, вы нажали клавишу Enter вместо ввода идентификатора (скажем, 1234).
То, что происходит, является результатом этих двух ошибок:
jstack
должен вызываться с идентификатором, который вы ему предоставляете.
Но в вашем случае (согласно коду, который вы указали в вопросе) вы назвали его без какой-либо переменной. Вы написали:
jstack > jstack.txt
Поэтому, когда вы запускаете jstack
без переменной, выдается следующее:
Terminate batch file Y/N?
Ваша вторая ошибка заключается в том, что вы нажимаете Enter вместо указания значения, когда программа спросит вас: Enter ID:
. Если бы вы в этот момент ввели идентификатор, скажем, 1234, переменная %id%
стала бы этим значением, в нашем случае 1234. Но вы НЕ указали значение и вместо этого нажали Enter. Если для переменной не задано какое-либо значение, и если для этой переменной ранее не было установлено ничего, то для переменной %id%
задается приглашение команды set
!! Так что теперь %id%
установлено на Enter ID:
, которое отображалось на вашем экране в соответствии с запросом в командном файле ДО того, как вы вызвали jstack.
Но я подозреваю, что у вас в коде командного файла jstack %id% > jstack.txt
есть код %id
(и он опущен по ошибке из вопроса), и что вы нажали ввод без ввода идентификатора. Затем пакетная программа повторила идентификатор, который теперь называется «Введите идентификатор:», и затем запустила jstack Enter ID: > jstack.txt
Jstack сам повторил ввод, обнаружил ошибку и попросил прекратить.
И все это было записано в файл jstack.txt.