2015-02-09 52 views
0
ECHO OFF 
setlocal enabledelayedexpansion 
CD C:\Work\ 
FOR /D /r %%G in ("t*") DO (
    START C:\prg.exe %%G\input_1 %%G\input_2 %%G\cpp_output 
    FOR /D /r %%H in (%%G\cpp_output\*.txt) DO (
     FOR /F %%i in ("%%H") DO (
      @set FN=%%~nxi DO (
       START C:\Work\compareResults.m %%G\matlab_output\FN.txt %%G\cpp_output\FN.txt 
      ) 
     ) 
    ) 
) 
PAUSE 

我一直試圖讓這個.bat代碼運行,但它不起作用 - 一個窗口快速打開和關閉 - 即prg沒有運行。但是,當我運行時:似乎無法在Windows批處理文件的循環中運行多個命令

ECHO OFF 
setlocal enabledelayedexpansion 
CD C:\Work\ 
FOR /D /r %%G in ("t*") DO (
    START C:\prg.exe %%G\input_1 %%G\input_2 %%G\cpp_output 
) 
PAUSE 

prg正在運行。我想這似乎有額外的命令有問題,但我不知道問題是什麼。 根據http://ss64.com/nt/for.html,可以在一個單獨的命令中使用幾條命令,並且它們可以在不同的行中。然而,這並沒有工作,所以我嘗試使用&有多個命令,我也嘗試使用脫字符(^)來斷行。由於批處理窗口消失得太快,所有這些似乎都無法工作,甚至無法真正調試任何東西。任何想法,我做錯了什麼?甚至如何調試.bat程序?

+0

啓動一個CMD控制檯,導航到您的文件並通過鍵入它的名稱和回車來運行它。這樣你就可以看到輸出,而不僅僅是一個窗口的打開和關閉。 Plz告訴我們錯誤信息在說什麼。 – MichaelS 2015-02-09 16:26:12

+0

'@set ... DO('不是一個有效的命令。刪除'DO(' – 2015-02-09 16:34:57

+0

@MichaelS我得到DO(在這個時候意外的是 – user3872358 2015-02-09 16:35:08

回答

0
... 
     @set FN=%%~nxi DO(
    START C:\Work\compareResults.m %%G\matlab_output\FN.txt %%G\cpp_output\FN.txt)))) 

這是行不通的。這是不好的語法。 DO不能站在SET命令的後面。在你的情況做什麼都會只FOR:

FOR something DO (
    codeline 1 
    codeline 2 
    ... 
    codeline n 
) 

如果你想幾個命令行來一個塊你就必須給他們的括號(間寫的),每個命令內一個新的行執行。

但是,還有一種方法可以在一行中組合幾條命令(這裏不要使用它):command1&command2&...comandn將一個接一個地執行命令1到n。即使其中一個命令發出錯誤,它們也會被執行。如果您使用& &而不是(command1&&command2&&...comandn),則只有在前一個命令沒有發生錯誤時纔會執行每個命令。

+0

謝謝!但是,我刪除了DO,並且仍然收到相同的錯誤消息 – user3872358 2015-02-09 16:49:04

+0

我也將FN更改爲J,並更改了START C:\ Work \ compareResults.m %% G \ matlab_output \ FN。 txt %% G \ cpp_output \ FN.txt到START C:\ Work \ compareResults.m %% G \ matlab_output \ %% J.txt %% G \ cpp_output \ %% J.txt,但因爲我雖然可能是一個問題,但我仍然得到同樣的e恐怖消息:( – user3872358 2015-02-09 16:59:24

相關問題