【发布时间】:2014-08-27 02:04:29
【问题描述】:
我是批量运行的
call C:\python27\python.exe program1.py input1 output1
call C:\python27\python.exe program2.py input2 output2
接下来,我要运行多个matlab m-file程序。
接下来,我运行批处理
call C:\python27\python.exe program3.py input3 output4
call C:\python27\python.exe program4.py input3 output4
然后我运行其他 matlab 程序,等等。
但是,如果我可以通过双击单个批处理文件来运行所有这些 python 和 matlab m 文件,那将非常方便。
如果批处理文件无法知道 m-file 的执行何时结束,我想出了一个可能的想象解决方案。
由于每个m文件都生成一个唯一的输出,“这行批处理文件在这个批处理文件所在的文件夹中创建matlab_output1.txt后2分钟后执行”
我选择“2分钟”是因为“matlab_output1.txt”被创建并不意味着m文件完成了“matlab_output1.txt”的创建,
也许对于 MatLab 来说,创建一个 txt 文件不会超过 2 分钟。
我也试过了。
start "01" /wait "C:\Program Files\MATLAB\R2012a\bin\matlab.exe" mfile.m
start "02" /wait "C:\python27\python.exe" python.py input.xlsx
和
start "01" /wait "C:\Program Files\MATLAB\R2012a\bin\matlab.exe" -r "m-file; exit"
start "02" /wait "C:\python27\python.exe" python.py input.xlsx
但是两种解决方案都失败了。它甚至在 matlab 程序启动之前就开始运行 python。
-等待
moarningsun 建议加-wait。
所以我尝试了
start "01" /wait "C:\Program Files\MATLAB\R2012a\bin\matlab.exe" -wait -r "aatest; exit;"
start "02" /wait "C:\python27\python.exe" simple_tool_naming.py match_naming1.xlsx
是的,最后python程序在matlab做某事之前没有启动。
但问题仍然是它无法运行 mfile。
【问题讨论】:
-
你如何
call你的matlab程序? -
@Shai Hm... 或者 start /wait 会起作用吗?有没有办法顺序运行python和m文件程序?
-
您可以从批处理文件中调用 matlab
call c:\path\to\matlab\matlab.exe -nodisplay -nojvm -r "cd my\matlab\folder; myMFile(); exit;",请参阅 matlab command line options 了解更多信息。 -
@Shai 所以这部分“cd my\matlab\folder; myMFile(); exit;”是本质。根据您提供给我的链接,这部分是“声明”。但是该链接没有解释如何编写该语句部分。你知道任何有用的链接吗?
-
@Shai 如果批处理文件与 m 文件位于同一文件夹中怎么办?那我可以省略“cd”部分吗?这样双引号部分现在变为“mymfile.m(); exit;” ?
标签: python matlab batch-file batch-processing