0

我正在编写一个简短的批处理文件,我将从命令窗口运行,它遍历所有以序列开头的子文件夹(在我的例子中是“01”)并运行位于每个文件夹中的 .exe 文件。

@echo off
CD "C:\Users\Acuna\Desktop\simulations"
for /D /r %%d in ("01*") do (
  pushd "%%d"
  start "" /wait hydro_2dm.exe
  popd
)

我遇到的问题是,当我在最后一行运行 .exe 文件(与代码一起运行良好)时,它要求我按 Enter 键继续并退出该过程,但我无法从批处理文件。我在几个论坛中搜索,他们在调用 .exe 时推荐此行

echo yes | call hydro_2dm.exe

但它没有用。有没有人有关于如何解决这个问题的建议?

先感谢您!

4

1 回答 1

0

是的,只需使用这个:

@if (@a==@b) @end /*

:: batch portion


:loop
cls
@ECHO OFF
cscript /e:jscript "%~f0"
:: JScript portion */
var shl = new ActiveXObject("WScript.Shell");

var shl = new ActiveXObject("WScript.Shell");
for (var i=0; i<50; i++) {
    shl.SendKeys(String.fromCharCode(0x0D));

}
    

goto :loop

这个脚本只是垃圾邮件“输入键”去这里https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes?redirectedfrom=MSDN了解更多信息。这可能是一个很好的解决方案,但您可以使用命令“超时”设置延迟,只需在需要时将其插入此处:


:: batch portion


:loop
timeout 1
cls
@ECHO OFF
cscript /e:jscript "%~f0"
:: JScript portion */
var shl = new ActiveXObject("WScript.Shell");
    shl.SendKeys(String.fromCharCode(0x0D));


goto :loop

在这种情况下,只需timeout在循环之后将命令后的数字更改为您想要的秒数。

于 2021-10-13T11:22:40.557 回答