2つの可能性があります。
に電話をかけるの%id%
を忘れましたjstack
。
jstack %id% > jstack.txt
したがって、正しいバッチファイル全体は次のようになります。
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
And / Or 2.コードに挿入しました(そして、質問に答えるのを忘れていました)が、バッチファイルを実行すると、IDを入力する代わりにEnterキーを押しました(たとえば1234)。
起こっていることはこれらの2つの間違いの結果です:
jstack
したIDで呼び出されることになっています。
しかし、あなたの場合(質問で提供したコードによると)、変数なしでそれを呼び出しました。あなたが書いた:
jstack > jstack.txt
したがって、jstack
変数なしで実行すると、次のように出力されます。
Terminate batch file Y/N?
2つ目の間違いは、プログラムから次のように要求されたときに、値を入力する代わりにEnterキーを押したことです Enter ID:
。この時点でID、たとえば1234を入力した場合、%id%
変数はその値(この場合は1234)になります。ただし、値を指定せずに、Enterキーを押しました。変数に値を指定せず、その変数が他に何も設定されていなかった場合、変数はコマンドの%id%
プロンプトに設定されますset
!! そのため、jstackを呼び出す前に、バッチファイルで要求されたとおりに画面にエコー%id%
されEnter ID:
たに設定されます。
しかし、私jstack %id% > jstack.txt
はあなたがあなたのバッチファイルコードにを持っている%id
(そして質問から間違ってそれを省略した)、そしてあなたがIDを入力せずにEnterキーを押したのではないかと思います。次に、バッチプログラムは、IDをエコーします。これは「Enter ID:」になり、実行されました。jstack Enter ID: > jstack.txt
Jstack自体が入力をエコーし、ミスに遭遇して終了するように要求しました。
そして、これらすべてがjstack.txtファイルに書き込まれました。