使用批处理顺序运行python程序和matlab文件

时间:2014-07-06 13:16:29

标签: python matlab batch-file batch-processing

我按批次运行

call C:\python27\python.exe program1.py input1 output1
call C:\python27\python.exe program2.py input2 output2

接下来,我必须运行多个matlab m文件程序。

接下来,我运行批处理

call C:\python27\python.exe program3.py input3 output4
call C:\python27\python.exe program4.py input3 output4

然后我运行其他matlab程序,等等。

但如果我可以通过双击一个批处理文件来运行所有这些python和matlab m文件,这将非常方便。

如果批处理文件无法知道m文件的执行何时结束,我想出了一个可能的假想解决方案。

由于每个m文件都生成一个唯一的输出,"在该批处理文件所在的文件夹中创建matlab_output1.txt后,在2分钟后执行这一批处理文件"

我选择了#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。

-wait

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。

2 个答案:

答案 0 :(得分:1)

您还需要将-wait选项传递给MATLAB,请参阅the Windows docs

  

MATLAB由一个单独的启动程序启动,通常启动MATLAB然后立即退出。使用此选项告诉启动程序在MATLAB终止之前不要退出。当您需要在脚本中处理MATLAB的结果时,此选项很有用。使用此选项调用MATLAB会阻止脚本继续,直到生成结果

答案 1 :(得分:1)

您需要在matlab命令行中使用-r参数:

start "01" /wait "C:\Program Files\MATLAB\R2012a\bin\matlab.exe" -r "mfile; exit"

假设您当前的工作目录中有mfile.m,并且此mfile.m是脚本或不需要任何输入参数的函数。

之前将此行放入批处理文件并尝试运行批处理文件,尝试打开命令窗口chdir到所需的工作目录并手动键入此命令以查看是否它有效或有任何错误信息,你可以很容易地理解和修复。