Vi sono due possibilità.
Hai dimenticato di inserire %id%
la jstack
chiamata.
jstack %id% > jstack.txt
Quindi l'intero file batch corretto dovrebbe essere:
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
E / o 2. L'hai inserito nel codice (e hai dimenticato di comunicarcelo nella domanda) ma quando hai eseguito il file batch hai premuto il tasto Invio invece di digitare un ID (ad esempio 1234).
Quello che sta succedendo è il risultato di questi due errori:
jstack
dovrebbe essere chiamato con l'id che gli viene fornito.
Ma nel tuo caso (in base al codice che hai fornito nella domanda) l'hai chiamato senza alcuna variabile. Hai scritto:
jstack > jstack.txt
Pertanto, quando si esegue jstack
senza variabili, viene visualizzato quanto segue:
Terminate batch file Y/N?
Il tuo secondo errore è che è stato premuto Invio invece di dare un valore quando il programma ti ha chiesto: Enter ID:
. Se a questo punto avessi inserito un ID, diciamo 1234, la %id%
variabile diventerebbe quel valore, nel nostro caso 1234. Ma NON hai fornito un valore e invece hai premuto Invio. Quando non si assegna alcun valore alla variabile e se quella variabile non era stata impostata prima per nessun altro, la variabile %id%
viene impostata al prompt del set
comando !! Quindi ora %id%
è impostato su Enter ID:
quale è stato fatto eco sullo schermo come richiesto nel file batch PRIMA di aver chiamato jstack.
Ma ho il sospetto che tu abbia DID jstack %id% > jstack.txt
nel codice del file batch con %id
(e lo abbia omesso per errore dalla domanda), e che premi Invio senza digitare un ID. Il programma batch ha quindi fatto eco all'ID, che ora è "Immetti ID:", quindi eseguitojstack Enter ID: > jstack.txt
Jstack stesso ha fatto eco all'input, ha riscontrato un errore e ha chiesto di terminare.
E tutto questo è stato scritto nel file jstack.txt.