我想在Application Engine Program中使用People代码执行批处理文件。但该程序将Exec代码作为非零值(值-1)返回时出现问题。
以下是人员代码段。
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;
如何解决此问题的任何帮助。
答案 0 :(得分:0)
最好的办法是追踪执行情况。
思想:
运行跟踪,并将输出放到我们这里。 :) HTH
答案 1 :(得分:0)
如何将工作目录更改为D:脚本内部?你正在调用两个命令,我想知道shell返回exec的是什么。我假设您编写了脚本以提供相应的返回代码,但这不是问题。
我无法从问题文本中说出来,但您是否在寻找负面结果,例如-1?我认为返回代码通常是正面的。 0表示成功,其他正数表示失败。负数可能是可以接受的,但我想知道Exec是否不喜欢负数?
也许PeopleCode ChDir函数仍然可以替代一行中的两个命令?我已经很久没试过了。
另一个让您对流程进行重要控制的替代方法是使用PeopleCode中的java.lang.Runtime.exec:http://jjmpsj.blogspot.com/2010/02/exec-processes-while-controlling-stdin.html。