我目前正在我的计算机上使用批处理文件运行模拟,以使事情更加自动化,而不是在前一个模拟完成后必须自己启动每个模拟。
然而,我注意到,当我运行批处理文件时,如果其中一个模拟无法完成,并且只运行了几个小时,我就无法跳过终止它并跳到下一个。这意味着,如果它在我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下为进程设置超时?