2


나는 매일 실행하는 DOS 배치 파일이 있습니다. 유사한 같은
뭔가 - 내가 직접 배치 파일의 .BAT 파일에 즉 이중 cliking을 실행하면예약 된 작업으로 배치와 혼동되는 문제

@ECHO ON 
SET COMMON_LIB=commons-io-1.3.1.jar; 
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating 

PAUSE 

,이 명령 창이 열리고 필요한 모든 명령을 실행 잘 실행합니다 (PAUSE주의) .
그러나 매일 작업을 예약 할 때 실행 상태가 표시됩니다. 또한, 작업을 마우스 오른쪽 버튼으로 클릭하면 작업을 끝낼 수있는 옵션 (상태가 Running 일 때)이 표시되지만 명령 창을 볼 수 없으므로 처리되지 않았거나 생성 된 오류가 발생하지 않습니다.
그래서 클래스 패스 나 자바 코드 또는 다른 곳에서 오류가 발생하는지 이해할 수 없습니다.

환경은 Windows Server 2003 R2 EE, SP2입니다. 사용자에게 관리자 권한이 있습니다.
확인했지만 Schedlgu.txt 파일이 WINDOWS\Tasks 디렉토리에 없습니다.
내가 알아챈 한 가지는 CLASSPATH 값이 jdk/bin에 대한 참조가 없다는 것입니다. 알려주십시오.

편집

그냥 일을 단순화하기, 나는 다음 거의 아무것도 할 몇 가지 변수를 설정 한 다음 열려있는 창을 유지하기 위해 일시 ​​중지 박쥐 파일의 java 명령 댓글을 달았습니다. 여전히 성공하지 못했습니다.

+0

문제점이 무엇인지 이해가되지 않습니다. 당신의 과제가 실패 했습니까? 어딘가에 오류가 있습니까? – Gabe

+0

같은 경우에도 작업이 실패했는지 여부는 이해할 수 없습니다. 그게 전부 내가 어디에도 오류가 표시되는 문제는 훨씬 더 어렵게 만드는 문제. –

답변

0

음, 일부 시행 착오 끝에 마침내 예약 된 작업을 실행할 수있었습니다.
Dave의 제안에 따라 std가 텍스트 파일로 리디렉션되어 어떤 오류가 생성되었는지 확인할 수 있습니다. 그러나 텍스트 파일이 비어 나오고 작업이 실행되었습니다.
그래서 나는 지금도 텍스트 파일이 비어 있습니다, 여전히 결과 java -version

@ECHO ON 

SET COMMON_LIB=commons-io-1.3.1.jar; 
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

java -version 

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating 

등을 추가했다.

그럼, 간단한 HelloWorld 프로그램을 생성 및 CheckHW.txt 내가이 HelloWorld 프로그램에 주신, 출력 텍스트를 가지고 박쥐 파일

@ECHO ON 

SET COMMON_LIB=commons-io-1.3.1.jar; 
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

java -version 

java HelloWorld > C:\ChechHW.txt 

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating 

이 자바 명령을 추가했다.

이제는 이러한 모든 것들이 혼란과 성가심에 추가되었습니다.

놀랍게도, 문제는 java 명령으로 클래스 경로를 설정하는 데 사용하고있는 변수 CLASSPATH입니다.
나는이 일을 시작하는 이유 중요한 것은 내 문제의 박쥐 파일이었다

SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

에서 %CLASSPATH%을 제거 후 어떻게 알고이 변경없이 Windows XP 시스템에 노력 해달라고.
Java 클래스 경로와 관련된 Windows 2003 Server의 일부 설정이 처리를 허용하지 않는 것이 궁금합니다.

0

예약 된 작업이 반드시 보이는 창을 열 필요는 없습니다.

내 경험상 예약 된 작업이 시작될 때 관련 사용자에 대한 활성 데스크톱 세션이있는 경우 일반적으로 해당 세션에서 창이 만들어집니다. 그러한 세션이 두 개 이상있는 경우 하나 이상의 세션이 선택되지만 선택 방법이 확실하지 않습니다. 그러한 활성 세션이 없으면 전혀 창이 생성되지 않습니다.

작업이 계속 실행 중이며 PAUSE 명령에서 멈추고 입력을 계속받을 수있는 방법이없는 것 같습니다. PAUSE는 내부 명령이므로 작업 관리자 나 프로세스 탐색기에서 별도의 프로세스로 표시되지 않으므로 확인하기가 어렵습니다. 그러나 실행중인 Java 프로세스가 없는지 확인할 수 있다면 배치의 Java 부분이 완료되었고 PAUSE에 걸렸을 것이라는 신념을 뒷받침합니다.

일반적으로 일괄 처리 파일을 예약 된 작업으로 실행하는 경우 작업 완료 후 오류를 찾을 수 있도록 표준 출력과 표준 오류를 모두 파일로 리디렉션하는 것이 좋습니다.

+0

설명 주셔서 감사합니다, 나는 아직 완전히 확신하지 못했습니다. 나는 Windows XP에서 똑같은 것을 시도했지만 절대적으로 좋았습니다. 예약 된 작업은 콘솔을 열고 PAUSE 명령에서 일시 중지했습니다. 숙고해야 할 좋은 지적이 있습니다. 나는 또한 stdout의 방향을 바꾸면서 시도 할 것이다. –

+0

Dave에게 많은 제안을 해주셔서 감사드립니다. –

+0

PAUSE 대신 오히려 그것을 추가 할 것이고, Java 명령을'start/WAIT java ...'와 함께 실행 해 볼 수 있습니다. 이론적으로 이것은 java 프로그램이 종료 될 때까지 명령 셸을 대기시켜야합니다. 스케줄 된 작업으로 실행할 때 "매달린"프로세스가 남아 있어서는 안됩니다. – icabod

관련 문제