我需要的是:当批处理仍在处理上一行时发送“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""
应该管用。
(您可能需要稍微调整语法,特别是关于嵌套的引号。)