Проблема при выполнении командного файла с использованием PeopleCode в программе Application Engine

Я хочу выполнить командный файл, используя код People в программе Application Engine. Но в программе есть проблема, возвращающая код 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 ответа

Лучше всего сделать след исполнения.

Мысли:

  • Можете ли вы войти в планировщик процессов, на котором вы это выполняете, и выполнить сценарий ОК?
  • AE планируется или вызывается во время выполнения?
  • Вам не нужно менять каталог, так как вы используете полный путь к скрипту.
  • вам не нужно вызывать "cmd / c", так как это создаст дополнительную оболочку для вашего приложения для запуска, усложнит отладку и т. д.

Запустите трассировку и отправьте нам вывод.:) HTH

А как насчет замены рабочего каталога на D: внутри скрипта? Вы вызываете две команды, и мне интересно, что оболочка возвращает exec. Я предполагаю, что вы написали свой скрипт, чтобы дать соответствующий код возврата, и это не проблема.

Я не могу сказать по тексту вопроса, но вы ищете отрицательный результат, например -1? Я думаю, что коды возврата обычно положительные. 0 для успеха, другое положительное число для неудачи. Отрицательные числа могут быть приемлемы, но мне интересно, если Exec не любит отрицательные числа?

Возможно, функция PeopleCode ChDir по-прежнему работает как альтернатива двум командам в одной строке? Я не пробовал это долгое время.

Другой альтернативой, которая дает вам значительный контроль над процессом, является использование java.lang.Runtime.exec от PeopleCode: http://jjmpsj.blogspot.com/2010/02/exec-processes-while-controlling-stdin.html while-controlling-stdin.html.

Другие вопросы по тегам