두 가지 가능성이 있습니다.
당신 %id%
은 jstack
전화 에 넣어 잊어 버렸습니다 .
jstack %id% > jstack.txt
따라서 전체 배치 파일은 다음과 같아야합니다.
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
그리고 / 또는 2. 코드에 코드를 넣었고 (질문에서 우리에게 말을 잊어 버렸습니다) 배치 파일을 실행할 때 ID를 입력하는 대신 Enter 키를 누르십시오 (1234).
무슨 일이 일어나고 있는지는이 두 가지 실수의 결과입니다
jstack
. 제공 한 ID로 호출되어야합니다.
그러나 귀하의 경우 (질문에 제공 한 코드에 따라) 변수없이 호출했습니다. 당신은 썼다 :
jstack > jstack.txt
따라서 jstack
변수없이 실행 하면 다음이 출력됩니다.
Terminate batch file Y/N?
두 번째 실수는 프로그램이 다음과 같은 질문을 할 때 값을 제공하는 대신 Enter를 눌렀다는 것 Enter ID:
입니다. 이 시점에서 ID (예 : 1234)를 입력 한 경우 %id%
변수는 해당 값이됩니다 (우리의 경우 1234). 그러나 값을 제공하지 않고 대신 Enter를 누르십시오. 변수에 값을 지정하지 않고 해당 변수가 이전에 다른 것으로 설정되지 않은 경우 변수는 명령 %id%
의 프롬프트로 설정됩니다 set
!! 이제 jstack을 호출하기 전에 배치 파일에서 요청한대로 화면에 에코되는 %id%
것이 설정되었습니다 Enter ID:
.
그러나 jstack %id% > jstack.txt
배치 파일 코드에 DID가 있고 %id
(질문에서 실수로 생략 했음 ) ID를 입력하지 않고 Enter 키를 누른 것으로 생각합니다. 그런 다음 일괄 처리 프로그램에서 ID를 에코 (이제 "Enter ID :") 한 다음 실행했습니다.jstack Enter ID: > jstack.txt
Jstack 자체가 입력을 반향하고 실수가 발생하여 종료를 요청했습니다.
그리고이 모든 것이 jstack.txt 파일에 작성되었습니다.