2017-03-09 135 views
0

我正在試圖讓matlab和ImageJ在批處理文件中的for循環中工作。按順序批量調用matlab和ImageJ

的代碼是這樣的

set iterationTimes=4 

for /l %%i in (0,1,%iterationTimes%) do (

call matlab -nodesktop -nosplash -r "loop=%%i%%;"%stitchFile% 

call %IJPath% -macro %JythonPath% %%arg%% 

) 

我指定的變量中,這個問題是ImageJ的需要使用MATLAB代碼的輸出,但該批次似乎同時執行的ImageJ和Matlab .. 。

我已經用電話進行迭代變量我的工作,將提前兩句話不會幫助其他呼叫..

所以,我怎麼能首先執行MATLAB和運行ImageJ的MATLAB運行完畢後, ?

謝謝!!!!

+0

更新:我試過啓動命令,它只能部分工作。我打電話給matlab先運行「loop = %% i %%」,然後運行一個.m文件(stitchFile)。當我在行前添加start/wait時,matlab只運行第一行(loop = %% i %%)並停止.............. –

+0

你在做什麼?代碼:'「loop = %% i %%;」'。因爲變量只是在字母前用2%的符號引用。你之後不要放兩個。 – Squashman

+0

我相信這是你的問題。你必須使用[matlab的等待選項](http://stackoverflow.com/a/22307518/1417694)。你不應該使用'START'或'CALL'。 – Squashman

回答

0

問題是你需要使用matlabs wait option。您不使用cmd.exe的CALLSTART /WAIT命令。

set iterationTimes=4 

for /l %%i in (0,1,%iterationTimes%) do (

matlab -wait -nodesktop -nosplash -r "loop=%%i;"%stitchFile% 

call %IJPath% -macro %JythonPath% %%arg%% 

) 
+0

謝謝你的工作。我從字面上沒有批​​處理經驗......我首先寫了一個bash代碼來做到這一點,它在OS X和Ubuntu上都能很好地工作......因此我沒有想到這個........... –

+0

@HongliWang,它確實不是一個批處理文件問題。你只是沒有正確使用你正在使用它的操作系統的matlab。 – Squashman