Ada dua kemungkinan.
Anda lupa untuk menempatkan %id%
di jstack
panggilan.
jstack %id% > jstack.txt
Jadi keseluruhan file batch yang benar adalah:
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
Dan / Atau 2. Anda memasukkannya ke dalam kode (dan lupa memberi tahu kami dalam pertanyaan) tetapi ketika Anda menjalankan file batch Anda menekan tombol Enter alih-alih mengetikkan ID (misalnya 1234).
Apa yang terjadi adalah hasil dari dua kesalahan ini:
jstack
seharusnya dipanggil dengan id yang Anda berikan.
Tetapi dalam kasus Anda (sesuai dengan kode yang Anda berikan dalam pertanyaan) Anda menyebutnya tanpa variabel apa pun. Kau menulis:
jstack > jstack.txt
Jadi ketika Anda menjalankan jstack
tanpa variabel itu menghasilkan yang berikut:
Terminate batch file Y/N?
Kesalahan kedua Anda adalah bahwa Anda menekan Enter bukannya memberikan nilai ketika program meminta Anda: Enter ID:
. Jika Anda akan memasukkan ID pada titik ini, katakan 1234, %id%
variabel akan menjadi nilai itu, dalam kasus kami 1234. Tetapi Anda TIDAK memberikan nilai dan sebaliknya menekan Enter. Ketika Anda tidak memberikan variabel nilai apa pun, dan jika variabel itu tidak disetel ke hal lain sebelumnya, maka variabel %id%
tersebut disetel ke prompt set
perintah !! Jadi sekarang %id%
diatur ke Enter ID:
yang digaungkan di layar Anda seperti yang diminta dalam file batch SEBELUM Anda memanggil jstack.
Tapi saya curiga Anda TIDAK memiliki jstack %id% > jstack.txt
kode file batch Anda dengan %id
(dan dihilangkan karena kesalahan dari pertanyaan), dan Anda menekan enter tanpa mengetikkan id. Program batch kemudian menggemakan id, yang sekarang "Masukkan ID:", dan kemudian jalankanjstack Enter ID: > jstack.txt
Jstack sendiri menggemakan input, menemukan kesalahan dan meminta untuk mengakhiri.
Dan semua ini ditulis dalam file jstack.txt.