2014-06-16 241 views
3

我有兩個批處理文件。 第一個是通過C#代碼開始:從C批處理文件運行批處理文件#

System.Diagnostics.Process.Start(System.Environment.CurrentDirectory + "\\Files\\myBat.bat", parameters + " > output.txt"); 

第二球棒的第一個內開始:

%MY_PATH%\secondBat.bat 

首先一個運行作爲假想的,但第二執行(第一蝙蝠的內部)是忽略。 這一切都有效,直到這一點。

如果通過cmd.exe手動啓動,它會工作 只有通過C#啓動它纔會工作。

感謝您的幫助

編輯:這是輸出:

C:\TheProg\XXXX\bin\Debug>C:\TheProg\XXXX\bin\Debug\secondBat.bat 

它只是doesn't執行

+0

如果使用「cmd/C」運行,效果會如何? –

+0

檢查這個如何啓動批處理文件的例子 - 似乎更加冗長,可能「只是工作」,儘管我不能提供更多的建議! http://stackoverflow.com/a/5519517/1370442 – bUKaneer

+1

不幸的是,這是我不尋找的標準方案。它與我的代碼具有完全相同的效果。 @Artem Razin: 是的 –

回答

0

I'我試圖重現你的問題。 我創建的測試.bat文件中C:\simplebats

bat1.bat: 

@echo off 
echo "bat1 started" 
C:\simplebats\bat2.bat 

bat2.bat: 

echo "bat2 started" 

我跑BAT1從Visual Studio你所做的一切:

System.Diagnostics.Process.Start("C:\\simplebats\\bat1.bat", " > output.txt"); 

後我運行一個output.txt文件在我Debug文件夾中創建(不simplebats)和它的預期兩行:

"bat1 started" 
"bat2 started" 

你真的確認第二.ba t文件沒有在你的情況下被解僱?也許你看不到它被解僱,因爲輸出文件是在你的Debug文件夾中創建的?這是我唯一想到的。

+2

這是不同的,但你的第一句話給了我「點擊」 這實際上是一個簡單的路徑尋找問題。 文檔中的標準文件夾名稱爲「Visual Studio 2010」,其中包含SPACES inbetween(經典)。 所以只需將文件夾移動到C:\ Test就是解決方案。我現在有點尷尬...... 由於某種原因,我還不能發佈答案... –

0

嘗試使用cmd.exe的啓動批處理文件,並提供包括路徑批處理文件的參數,作爲參數System.Diagnostics.Process.Start

System.Diagnostics.Process.Start("cmd.exe" , System.Environment.CurrentDirectory + "\\Files\\myBat.bat" + parameters + " > output.txt"); 
+1

你好,我已經試過了。它似乎忽略了cmd.exe的參數。它只是打開cmd,然後cmd什麼都不做。 –

+0

嘗試添加防止命令提示符關閉的'/ k'參數。這可能包含一個錯誤消息,現在可以看到 – AcidJunkie

+1

AcidJunkie,這是不必要的,因爲,正如我所說,窗口已經保持這種方式。沒有錯誤信息,只是cmd提示等待輸入 –