我目前正在使用批处理文件在我的计算机上运行模拟,以使事情更加自动,而不是必须在前一个模拟完成后自己启动每个模拟。
但是我注意到,当我运行我的批处理文件时,如果其中一个模拟器无法完成并且只运行了几个小时,我就无法跳过终止它并跳到下一个。这意味着,如果它在我的200 ...第二次模拟中跳出来......那么我就失去了一个周末的模拟时间。
我想知道你们其中一个人是否可以告诉我如何加入"计时器"执行条件,以便在运行5小时后终止并继续执行下一个命令。
有关信息,我的文件看起来像这样(ogs是我的可执行文件,路径是可执行文件查找输入的位置,然后它将consol打印到名为Screen_out.txt的文件中):
ogs Depth_200_Poro_15_Thick_40_Perm_100\ax > Depth_200_Poro_15_Thick_40_Perm_100\Screen_out.txt
ogs Depth_200_Poro_15_Thick_174_Perm_100\ax > Depth_200_Poro_15_Thick_174_Perm_100\Screen_out.txt
ogs Depth_200_Poro_15_Thick_350_Perm_100\ax > Depth_200_Poro_15_Thick_350_Perm_100\Screen_out.txt
我有200条左右的行,但是我使用Python脚本自动生成它们,所以我不介意重复的解决方案看起来像这样,因为它只是添加它的问题到我用来创建批处理文件的字符串:
set timer to 5hrs, if timer is reached terminate and move on
ogs Depth_200_Poro_15_Thick_40_Perm_100\ax > Depth_200_Poro_15_Thick_40_Perm_100\Screen_out.txt
set timer to 5hrs, if timer is reached terminate and move on
ogs Depth_200_Poro_15_Thick_174_Perm_100\ax > Depth_200_Poro_15_Thick_174_Perm_100\Screen_out.txt
set timer to 5hrs, if timer is reached terminate and move on
ogs Depth_200_Poro_15_Thick_350_Perm_100\ax > Depth_200_Poro_15_Thick_350_Perm_100\Screen_out.txt
我环顾四周,但似乎在Windows下,timeout命令只会暂停执行而不是终止它。
我尝试了以下使用How to set a timeout for a process under Windows 7?:
start "ogs Depth_4000_Poro_23_Thick_350_Perm_650\ax > Depth_4000_Poro_23_Thick_350_Perm_650\Screen_out.txt"
timeout /t 10
taskkill /im ogs.exe /f
timeout /t 7
以上似乎有效,程序执行并在10秒后关闭但是命令窗口打开了
start "ogs Depth_4000_Poro_23_Thick_350_Perm_650\ax > Depth_4000_Poro_23_Thick_350_Perm_650\Screen_out.txt"
<\ n>当ogs.exe被杀死时,它不会关闭。
---- 29/07/2016更新-----
所以目前我正在使用以下内容:
start cmd /c "ogs Depth_4000_Poro_23_Thick_350_Perm_650\ax > Depth_4000_Poro_23_Thick_350_Perm_650\Screen_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秒但是继续下一次运行
感谢您的帮助。
答案 0 :(得分:0)
感谢@CherryDT设法让它使用:
start cmd /c "ogs Depth_4000_Poro_23_Thick_350_Perm_650\ax > Depth_4000_Poro_23_Thick_350_Perm_650\Screen_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