Назад | Перейти на главную страницу

Пакетная обработка: передача ключа ввода во вложенные программы (программа запускается MPIExec)

Что мне нужно: чтобы отправить ключ "Enter", когда пакет все еще обрабатывает предыдущую строку.

Я пытаюсь использовать пакетную обработку, чтобы .exe запускал серию входных файлов. Пакетный файл ниже запускает программу, создает выходной файл, копирует его, а затем очищает папку для запуска следующего набора входных переменных.

Проблема в том, что после запуска .exe он говорит «нажмите Enter, чтобы продолжить».

@if (@CodeSection == @Batch) @then
set SendKeys=CScript //nologo //E:JScript "%~F0"

for %%i IN (1,2,3) do (
    mpiexec --ppn 20 myprogram "input%%i.input"
    %SendKeys% "{ENTER}"
    xcopy "D:\Original\input%%i-*" "D:\Output\output%%i-*"
    clean.bat
)
pause

goto :EOF
@end
// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

Что я предпринял:

Мысли?

Если я правильно понимаю цель команды mpiexec, что-то вроде

mpiexec --ppn 20 cmd /c "echo . | myprogram "input%%i.input""

должно сработать.

(Возможно, вам придется немного изменить синтаксис, особенно в отношении вложенных кавычек.)