Es gibt zwei Möglichkeiten.
Sie haben vergessen, %id%
den jstack
Anruf zu tätigen.
jstack %id% > jstack.txt
Die gesamte richtige Batch-Datei sollte also sein:
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
Und / oder 2. Sie haben es in den Code eingefügt (und vergessen, uns dies in der Frage mitzuteilen), aber als Sie die Batch-Datei ausgeführt haben, haben Sie die Eingabetaste gedrückt, anstatt eine ID einzugeben (z. B. 1234).
Was passiert, ist das Ergebnis dieser beiden Fehler:
jstack
soll mit der ID aufgerufen werden, die Sie angeben.
Aber in Ihrem Fall (gemäß dem Code, den Sie in der Frage angegeben haben) haben Sie es ohne Variable aufgerufen. Sie schrieben:
jstack > jstack.txt
Wenn Sie also jstack
ohne Variable ausgeführt werden, wird Folgendes ausgegeben:
Terminate batch file Y/N?
Ihr zweiter Fehler ist, dass Sie die Eingabetaste gedrückt haben, anstatt einen Wert anzugeben, als Sie vom Programm gefragt wurden : Enter ID:
. Wenn Sie zu diesem Zeitpunkt eine ID eingegeben hätten, z. B. 1234, würde die %id%
Variable diesen Wert annehmen, in unserem Fall 1234. Sie haben jedoch KEINEN Wert angegeben und stattdessen die Eingabetaste gedrückt. Wenn Sie der Variablen keinen Wert geben und diese Variable zuvor nicht auf etwas anderes gesetzt wurde, wird die Variable %id%
auf die Eingabeaufforderung des set
Befehls gesetzt !! Jetzt %id%
ist also festgelegt, Enter ID:
welches auf Ihrem Bildschirm wie in der Batch-Datei angefordert wiedergegeben wurde, BEVOR Sie den jstack aufgerufen haben.
Aber ich vermute, Sie haben den jstack %id% > jstack.txt
Code in Ihrer Batch-Datei mit dem %id
(und haben ihn versehentlich in der Frage weggelassen) und Sie drücken die Eingabetaste, ohne eine ID einzugeben. Das Stapelverarbeitungsprogramm gab dann die ID zurück, die jetzt "ID eingeben:" lautet, und wurde dann ausgeführtjstack Enter ID: > jstack.txt
Jstack selbst wiederholte die Eingabe, stieß auf einen Fehler und bat um Beendigung.
Und das alles wurde in die Datei jstack.txt geschrieben.