2012-05-11 3 views
1

Java 응용 프로그램에 대한 작은 종료 스크립트를 작성 중입니다. 나는 PID를 얻을 후 다음을 수행하십시오 :taskkill : 다른 동작 콘솔 대 스크립트

taskkill /t /pid !pid! 

내가 콘솔에서 명령을 실행하고 있다면 모든 것이 잘 작동 (손으로 입력). 나는 자바 콘솔에서 실행되는 종료 루틴을보고 나중에 자바 콘솔은 사라진다. 가끔 "프로세스가 응답하지 않습니다. 잠시 기다리십시오."또는 "잠깐 기다려주십시오."대화 상자가 나타나지만 대화 상자는 Java 프로그램이 중단 될 때 자동으로 닫힙니다.

같은 명령으로 박쥐 파일을 실행하면 "프로세스가 응답하지 않습니다 ..."대화 상자가 나타납니다. 콘솔 출력을 봅니다 : "프로세스가 성공적으로 종료되었습니다."하지만 Java 콘솔이 아직 열려 있습니다. 그것은 심지어 종료 시퀀스를 시작하지 않았다.

편집 : 지연 확장이 비활성화 만 레지스트리 EY 또는 cmd /V:on 활성화 할 수있는 명령 줄 !pid!에 전체 배치 스크립트

@echo off 
setlocal enabledelayedexpansion 
if exist .\lock (
set /p pid=< lock 
taskkill /t /pid !pid! 
) 
+0

후 에코를 추가해야합니다. – adarshr

+0

님이 질문에 답변을 추가했습니다. – Nicolas

답변

1

은 일반적으로 확장되지 않습니다.

명령 줄에서 !pid!은 변경되지 않고 배치에서 pid 변수의 내용으로 확장됩니다. 당신이 cmd를 라인에 올바른 명령을 보여으로

편집 , 일괄 처리 명령이 잘못된해야합니다.

당신은 설정/P 라인 그런 다음 우리에게 배치 스크립트를 보여 주어야

Echo pid="!pid!" 
+0

. 커맨드 라인에서 나는 taskkill/pid 1234와 같은 것을 입력했다. – Nicolas

+0

@nicolas 나는 대답 – jeb

+0

을 편집한다. 내가 실행하는 두 명령은 정확히 같다. 질문 : 명령 줄에서 직접 실행되는 명령이 스크립트에서 실행되는 명령과 약간 다르게 실행될 수 있습니까? 다른 시간 초과 설정, 다른 스레드, .... – Nicolas