2016-10-18 4 views
0

응용 프로그램 엔진 프로그램에서 피플 코드를 사용하여 배치 파일을 실행하려고합니다. 그러나이 프로그램에는 Exec 코드가 0이 아닌 값 (값 - 1)으로 반환되는 문제가 있습니다.응용 프로그램 엔진 프로그램에서 PeopleCode를 사용하여 배치 파일을 실행할 때 발생하는 문제

아래는 사람 코드입니다.

Global File &FileLog; 

Global string &LogFileName, &Servername, &commandline; 
Local string &Footer; 

If &Servername = "PSNT" Then 

    &ScriptName = "D: && D:\psoft\PT854\appserv\prcs\RNBatchFile.bat"; 

End-If; 

&commandline = &ScriptName; 

/* Need to commit work or Exec will fail */ 
CommitWork(); 

&ExitCode = Exec("cmd.exe /c " | &commandline, %Exec_Synchronous + %FilePath_Absolute); 

If &ExitCode <> 0 Then 
MessageBox(0, "", 0, 0, ("Batch File Call Failed! Exit code returned by script was " | &ExitCode)); 
End-If; 

이 문제를 해결하는 방법에 대한 도움이 필요합니다.

+1

왜 & ScriptName = "D : \ psoft \ PT854 \ appserv \ prcs \ RNBatchFile 대신에 & ScriptName ="D : && D : \ psoft \ PT854 \ appserv \ prcs \ RNBatchFile.bat "; bat "; ' –

+0

디렉토리를 D 드라이브로 변경하고 스크립트를 실행하고 싶습니다. – Sandy

+0

'& D : && D : \ psoft라고 생각합니다. '& exitCode = Exec ("D : \ psoft \ PT854 \ appserv \ prcs \ RNBatchFile.bat", % Exec_Synchronous + % FilePath_Absolute) 할 수 있어야합니다. . "는 구문 상 유효하지 않으므로 오류가 발생합니다. –

답변

0

가장 좋은 방법은 실행 추적을하는 것입니다.

생각은 :

  • 당신이 프로세스 스케줄러에 로그온 할 수

    당신에이를 실행하고 확인 스크립트를 실행하는?
  • AE가 런타임에 예약되거나 호출되는 중입니까?
  • 스크립트에 대한 완전한 경로를 사용하는 것처럼 디렉토리를 변경할 필요가 없습니다.
  • 당신이 추가 쉘을 생성합니다 같이 응용 프로그램 내에서 실행하려면, "cmd를/c"를 호출해야하는 등, 열심히 debuging

실행 추적하고, 우리에게 출력을 떨어 뜨리지한다. :) HTH

0

대신 작업 디렉토리를 D :로 변경하는 방법은 무엇입니까? 당신은 두 개의 명령을 호출하고 쉘이 exec로 돌아가는지 궁금합니다. 적절한 반환 코드를 제공하기 위해 스크립트를 작성했다고 가정하고 있지만 문제는 아닙니다.

질문 텍스트에서 알 수 없지만 -1과 같은 부정적인 결과를 찾으십니까? 나는 일반적으로 리턴 코드가 긍정적이라고 생각한다. 성공에 대해서는 0, 실패에 대해서는 다른 양수입니다. 음수는 받아 들일 수 있지만 Exec이 음수를 좋아하지 않는지 궁금해하십니까?

아마도 PeopleCode ChDir 함수는 한 줄에 두 개의 명령 대신 사용할 수 있습니까? 나는 그것을 오랫동안 시도하지 않았다.

프로세스를 제어하는 ​​또 다른 방법은 PeopleCode의 java.lang.Runtime.exec을 사용하는 것입니다. http://jjmpsj.blogspot.com/2010/02/exec-processes-while-controlling-stdin.html.