Є дві можливості.
Ви забули покласти %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
у вашого DID є код у пакетному файлі з %id
(і помилково пропущено його з питання), і ви натискаєте клавішу Enter, не вводячи ідентифікатор. Потім пакетна програма повторила ідентифікатор, який зараз "Enter ID:", а потім запустивсяjstack Enter ID: > jstack.txt
Сам Jstack повторив дані, зіткнувся з помилкою і попросив припинити.
І все це було записано у файл jstack.txt.