批处理:将“Enter Key”传递到嵌套程序中(由 MPIExec 运行的程序)

批处理:将“Enter Key”传递到嵌套程序中(由 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));

我尝试过的:

  • 在“myprogram”之后使用sendkeys,结果:程序仍然需要输入。
  • 在“myprogram”之前使用sendkeys,结果:程序仍然需要输入。
  • 将 sendkeys 与 'ping' 结合使用。延迟发生在程序之前或之后,因此没有用。
  • 尝试在 sendkeys 命令中使用“管道”。出现错误。

有什么想法吗?

答案1

如果我正确理解了 mpiexec 命令的目的,那么

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

应该管用。

(您可能需要稍微调整语法,特别是关于嵌套的引号。)

相关内容