Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理文件返回正在运行的可执行文件的数量?_Batch File - Fatal编程技术网

Batch file 使用批处理文件返回正在运行的可执行文件的数量?

Batch file 使用批处理文件返回正在运行的可执行文件的数量?,batch-file,Batch File,这里是问题的简短版本 我从一个批处理文件中运行一个EXEXUTABLE(它反过来运行一个模拟)。我一次最多可以跑四个。是否有任何方法可以检查(从批处理文件)一次运行了多少个这些可执行文件 长版本 我有一个批处理文件,允许我运行多个模型,但由于许可,我不能同时运行超过4个模型。然而,我可以将它们排队运行,但是我正在努力编写一个批处理文件,以确保始终有四个模型在运行。下面是我最大的努力(通过搜索互联网拼凑而成) 其中A、B、C和D是包含传递给可执行文件的变量组合的数组。然后,我有一个记录迭代次数的计

这里是问题的简短版本

我从一个批处理文件中运行一个EXEXUTABLE(它反过来运行一个模拟)。我一次最多可以跑四个。是否有任何方法可以检查(从批处理文件)一次运行了多少个这些可执行文件

长版本

我有一个批处理文件,允许我运行多个模型,但由于许可,我不能同时运行超过4个模型。然而,我可以将它们排队运行,但是我正在努力编写一个批处理文件,以确保始终有四个模型在运行。下面是我最大的努力(通过搜索互联网拼凑而成)

其中A、B、C和D是包含传递给可执行文件的变量组合的数组。然后,我有一个记录迭代次数的计数,在每四次迭代中,if语句的“True”条件被触发,批处理等待直到模型运行完成,然后继续

这是可以的,但我的其他三个模型可能会更早完成,释放出宝贵的cpu时间,因为批处理正在等待第四次迭代完成,所以没有利用这些时间。或者更糟糕的是,第四次迭代在其他三次迭代之前完成,并最终尝试运行四个以上的模型,这会导致弹出一个授权窗口,要求用户关闭该窗口


我肯定会错过任何建议或其他解决方案吗?

我会尝试每隔几秒钟运行一次轮询循环,调用

tasklist | findstr "TUFLOW"
获取输出中的行数,如果行数小于4,则开始新的运行


您似乎在编写复杂的批处理文件时没有任何问题,因此我不会在这里尝试编码。可以在
FOR/F
中计算命令输出的行数。轮询延迟将需要
睡眠
实现。如果您已经安装了例如Cygwin,那么您已经安装了这个。大多数Windows版本都有一个未记录的命令
timeout NumberOfSeconds
,这是我了解的。

我会尝试每隔几秒钟运行一次轮询循环,调用

tasklist | findstr "TUFLOW"
获取输出中的行数,如果行数小于4,则开始新的运行


您似乎在编写复杂的批处理文件时没有任何问题,因此我不会在这里尝试编码。可以在
FOR/F
中计算命令输出的行数。轮询延迟将需要
睡眠
实现。如果您已经安装了例如Cygwin,那么您已经安装了这个。大多数Windows版本都有一个未记录的命令
timeout NumberOfSeconds
,我了解到了这一点。

使用
tasklist.exe来计算运行的程序数量相对容易

for /f "skip=3" %%x in ('tasklist /FI "IMAGENAME eq TUFLOW_iSP_w64.exe"') do set /a count=count+1
echo TUFLOW_iSP_w64.exe is running %count% times.
只要记住每次运行时清除
count
或将其设置为
0

或者,更慢地说:

for /f %%x in ('tasklist ^| find /c "TUFLOW_iSP_w64.exe"') set count=%%x
Echo TUFLOW_iSP_w64.exe is running %count% times.

上面的代码比较慢,因为
find
必须处理整个任务列表。

使用
tasklist.exe来计算运行的程序数相对比较容易

for /f "skip=3" %%x in ('tasklist /FI "IMAGENAME eq TUFLOW_iSP_w64.exe"') do set /a count=count+1
echo TUFLOW_iSP_w64.exe is running %count% times.
只要记住每次运行时清除
count
或将其设置为
0

或者,更慢地说:

for /f %%x in ('tasklist ^| find /c "TUFLOW_iSP_w64.exe"') set count=%%x
Echo TUFLOW_iSP_w64.exe is running %count% times.

上面的代码比较慢,因为
find
必须处理整个任务列表。

您可以始终使用
choice.exe
作为超时
choice/n/d y/t 5>nul
将等待5秒(除非您按
y
n
),谢谢。这些不可思议的神秘方法是使用Perl或Powershell或几乎任何其他脚本解决方案代替cmd.exe的原因。是的,但没有什么比批量解决“不可能”的问题更令人满意的了。:)您可以始终使用
choice.exe
作为超时值
choice/n/d y/t 5>nul
将等待5秒钟(除非您按
y
n
)。谢谢。这些不可思议的神秘方法是使用Perl或Powershell或几乎任何其他脚本解决方案代替cmd.exe的原因。是的,但没有什么比批量解决“不可能”的问题更令人满意的了。:)非常感谢,这正是我所需要的——对不起,我不能投票支持你!显然,我非常需要15分的钞票,这正是我所需要的——对不起,我不能投票支持你!显然我需要15分