2013-04-01 45 views
3

我在C#項目中的場景是用戶將像"c:\homedir\mydir"這樣的路徑傳遞給批處理文件,那麼批處理文件應該接受此路徑並在指定路徑上創建目錄。如何通過C#將字符串傳遞給批處理文件以及批處理文件如何接受字符串參數?

我不知道如何通過c#傳遞字符串到批處理文件以及批處理文件如何接受字符串並處理它。

+0

[如何發送系列命令窗口進程的命令?(http://stackoverflow.com/a/4789324/417747) – NSGaga

+0

爲什麼通參數批處理文件?你不能在C#應用程序內進行處理?它使諸如從批處理文件獲得反饋的事情變得複雜。你怎麼知道是否有問題?您可以使用狀態/結果代碼,但不是非常健壯。 –

+0

嗨,彼得感謝您的建議,我會盡量從c#應用程序做同樣的事情。 – Rushikesh

回答

2

創建一個流程並將您的參數傳遞給StartInfo.Arguments屬性。

Process proc = new Process(); 
proc.StartInfo.FileName = //path to your BAT file 
proc.StartInfo.Arguments = String.Format("{0}", @"C:\homedir\mydir"); 
//set the rest of the process settings 
proc.Start(); 

這將加載您的BAT文件,並通過你添加的參數爲準。您的BAT文件可以使用%1作爲第一個參數,%2作爲第二個參數等等。

+0

也許會添加一些信息C#代碼如何知道批處理過程結束。如果無限循環,該怎麼辦?順便說一句,在甚至開始新的進程之前檢查是否存在目錄。 –

+0

公平的評論,但我的答案假設OP將承擔一些責任與錯誤處理。 OP的帖子中沒有足夠的細節讓它值得嘗試涵蓋所有可能的方面。 – keyboardP

+0

謝謝keyboardP – Rushikesh

1

因爲您沒有給我們提供任何信息,我只是舉例說明這些主題。

首先,您需要使用Process類包含System.Diagnostics命名空間。

提供對本地和遠程進程的訪問,並使您能夠啓動 並停止本地系統進程。

與一個批處理文件的一個例子:

Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.FileName = "yourbatchfile.bat"; 
p.Start(); 

傳遞參數,你可以使用ProcessStartInfo.Arguments屬性。

獲取或設置應用程序啓動 時要使用的一組命令行參數。

+0

感謝Soner,它對我很有幫助 – Rushikesh

+0

@Rushikesh不客氣';)' –

相關問題