在应用程序引擎程序

时间:2016-10-18 01:48:42

标签: peoplesoft peoplesoft-app-engine

我想在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;

如何解决此问题的任何帮助。

2 个答案:

答案 0 :(得分:0)

最好的办法是追踪执行情况。

思想:

  • 您是否可以登录正在运行此进程的进程调度程序并执行脚本OK?
  • 是否在运行时安排或调用AE?
  • 您不需要更改目录,因为您使用的是脚本的完全限定路径。
  • 你不应该打电话给#34; cmd / c&#34;因为这将为你的应用程序创建一个额外的shell来运行,使得debuging更加困难等等。

运行跟踪,并将输出放到我们这里。 :) 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