Batch-File

批處理:將“輸入鍵”傳遞給嵌套程序(MPIExec 執行的程序)

  • June 4, 2019

我需要什麼:在批處理仍在處理前一行時發送“輸入”鍵。

我正在嘗試使用批處理讓 .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 命令中“管道”。出錯了。

想法?

如果我正確理解 mpiexec 命令的目的,例如

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

應該管用。

(您可能需要稍微調整語法,尤其是在嵌套引號方面。)

引用自:https://serverfault.com/questions/969697