matlab - EXE崩溃时如何避免提示

标签 matlab batch-file crash exe

我在MATLAB中运行优化算法,并调用批处理文件(该文件称为EXE文件)为MATLAB中的每次迭代执行任务。我希望该EXE在MATLAB中的代码继续进行下一次迭代之前运行并关闭。到目前为止,我已经使用了批处理文件中的START / WAIT命令,它们可以正常工作。这是我的示例:

@echo off
@TITLE Ostrich - Optimizaton Software Toolkit

REM Launch Ostrich,wait until it completes
START /WAIT "OSTRICH" /MIN Ostrich.exe

echo Done! > OstDone.txt

现在这是我的问题。如果Ostrich.exe崩溃,我会提示我调试或关闭程序。这意味着当我运行该算法时,我必须在场并观看屏幕(这不方便,我有时在慢速的EXE上运行了1000次迭代)。我必须先关闭程序,然后才能继续执行MATLAB代码。

现在,如果我摆脱了/ WAIT部分,请添加一个计时器并执行以下操作:
@echo off
@TITLE Ostrich - Optimizaton Software Toolkit

REM Launch Ostrich
START "OSTRICH" /MIN Ostrich.exe

REM Wait 2 seconds
ping localhost -n 2 -w 2500 > nul

REM If it takes more than 2 seconds it has probably crashed. Exit:
if %errorlevel% neq 0 exit /b %errorlevel%

上面的代码引入了新的问题。首先,我必须估计EXE每次运行所花费的时间(由于时间不是固定的,因此我必须设置一个上限),并且错误检查行无法关闭EXE (可能只是关闭不理想的批处理文件)。

在第二个代码下,如果EXE崩溃,则会出现提示。但是,MATLAB循环继续,并且在新窗口中运行了EXE的新实例。如果崩溃足够多,我会在MATLAB循环结束时打开几个提示。在整个算法的上下文中,这不是什么大问题,但也不是很理想。

基本上,我想编写一些代码,以便在崩溃时关闭并重新运行EXE文件,或者在仍然使用/ WAIT命令的同时关闭它(没有调试或关闭提示),因为它使我可以利用某些东西快速的EXE运行(EXE的速度取决于我可能会在其输入文件中修改的许多因素)。

我是使用批处理文件的新手,将不胜感激。

最佳答案

@echo off
@TITLE Ostrich - Optimization Software Toolkit

for /L %%a in (1,1,1000) do (
REM Launch Ostrich
START "OSTRICH" /MIN Ostrich.exe

REM Wait 2 seconds
ping -n 2 localhost>nul

REM kill ostrich if it is running or not, and pause for 2 more seconds
taskkill /f /im "ostrich.exe" >nul 2>&1
ping -n 2 localhost>nul
)

关于matlab - EXE崩溃时如何避免提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18579394/

相关文章:

windows - 如何在cmd中调用嵌套程序

batch-file - 使用 setlocal 后如何正常设置变量?

ios - 如何调试和重现 `NSOperationQueue`崩溃

c++ - 普通比较时QT 4.8崩溃

data-structures - MATLAB 中有 "queue"吗?

events - MATLAB 事件和无限休眠或检查循环

string - 如何格式化字符串以用作 MATLAB 中的结构字段名称?

matlab - 返回表中每个子组的最大值

batch-file - 批处理脚本删除给定文件夹中最旧的文件夹

python - 每当我启动时,Anaconda都会崩溃