批处理文件超时,终止当前命令并执行下一个命令



我目前正在我的计算机上使用批处理文件运行模拟,以使事情更加自动化,而不是在前一个模拟完成后必须自己启动每个模拟。

然而,我注意到,当我运行批处理文件时,如果其中一个模拟无法完成,并且只运行了几个小时,我就无法跳过终止它并跳到下一个。这意味着,如果它在我200次模拟中的第二次失败……那么我就失去了一个周末的模拟时间。

我想知道你们中的一个人是否可以告诉我如何在执行中包含一个"定时器"条件,以便在运行5小时后终止并转到下一个命令。

关于信息,我的文件如下所示(ogs是我的可执行文件,路径是可执行文件查找输入的位置,然后它将控制台打印到一个名为Screen_out.txt的文件中):

ogs Depth_200_Poro_15_Thick_40_Perm_100ax    >    Depth_200_Poro_15_Thick_40_Perm_100Screen_out.txt
ogs Depth_200_Poro_15_Thick_174_Perm_100ax    >    Depth_200_Poro_15_Thick_174_Perm_100Screen_out.txt
ogs Depth_200_Poro_15_Thick_350_Perm_100ax    >    Depth_200_Poro_15_Thick_350_Perm_100Screen_out.txt

我有大约200行,但我使用Python脚本自动生成它们,所以我不介意这样的重复解决方案,因为只需要将其添加到我用来创建批处理文件的字符串中:

set timer to 5hrs, if timer is reached terminate and move on
ogs Depth_200_Poro_15_Thick_40_Perm_100ax    >    Depth_200_Poro_15_Thick_40_Perm_100Screen_out.txt
set timer to 5hrs, if timer is reached terminate and move on
ogs Depth_200_Poro_15_Thick_174_Perm_100ax    >    Depth_200_Poro_15_Thick_174_Perm_100Screen_out.txt
set timer to 5hrs, if timer is reached terminate and move on
ogs Depth_200_Poro_15_Thick_350_Perm_100ax    >    Depth_200_Poro_15_Thick_350_Perm_100Screen_out.txt

我环顾四周,但在Windows下,timeout命令似乎只是暂停执行,而不是终止执行

我尝试了以下操作,使用"如何在Windows 7下为进程设置超时?":

start   "ogs    Depth_4000_Poro_23_Thick_350_Perm_650ax    >    Depth_4000_Poro_23_Thick_350_Perm_650Screen_out.txt"
timeout /t 10
taskkill /im ogs.exe /f 
timeout /t 7

以上似乎有效,程序执行并在10秒后关闭,但打开的命令窗口

start   "ogs    Depth_4000_Poro_23_Thick_350_Perm_650ax    >    Depth_4000_Poro_23_Thick_350_Perm_650Screen_out.txt"

关闭ogs.exe时不会关闭。

----2016年7月29日更新-----

因此,目前我正在使用以下内容:

start cmd /c    "ogs    Depth_4000_Poro_23_Thick_350_Perm_650ax    >    Depth_4000_Poro_23_Thick_350_Perm_650Screen_out.txt" //executes the command as before
timeout /t 34000// waits for 34000 seconds
taskkill /im ogs.exe /f // terminates the program after the 10 seconds
timeout /t 7 // waits 10 seconds to insure the program has terminated correctly

我的问题是,当我的程序ogs.exe在34000秒之前完成时,计算机将等待超时,然后再启动下一次运行ogs.exe。我希望它最多等待34000秒,但如果程序在34000秒超时之前完成,则继续下一次运行

谢谢你的帮助。

感谢@CherryDT使用使其工作

start cmd /c    "ogs    Depth_4000_Poro_23_Thick_350_Perm_650ax    >    Depth_4000_Poro_23_Thick_350_Perm_650Screen_out.txt" //executes the command as before
timeout /t 10 // waits for 10 seconds
taskkill /im ogs.exe /f // terminates the program after the 10 seconds
timeout /t 7 // waits 10 seconds to insure the program has terminated correctly

其他有用的线程:批处理文件-每20分钟后重新启动程序

如何在Windows7下为进程设置超时?

相关内容

  • 没有找到相关文章

最新更新