2010-04-02 28 views
4

右什麼即時試圖完成的是,基本上將活動分區的1次點擊,節約使用命令提示符等的精力時間和技能如何在C#中執行cmd,然後在同一個窗口中執行下面的其他命令?

我特地到System.Management命名空間,但couldn」的程序噸工作了如何使用它:(

所以我已經訴諸使用CMD,我有一個模塊應用程序用C#編寫,基本上我想運行「DISKPART」,然後啓動cmd窗口中的diskpart,然後我想問它「選擇磁盤0」,其次是「選擇分區1」,最後是「活動」。

在CMD中這樣做你自己工作正常,但與應用程序它被證明是很尷尬的:(事實上,它設法讓DiskPart在Process.Start的一個窗口中運行,然後打開一個新窗口並運行下一段代碼,但因爲新窗口沒有運行diskpart cmd它不工作::(

有什麼建議嗎?

謝謝!

+0

難道你不能將你的命令寫入一個臨時的.bat文件並使用Process.Start運行它嗎? – IVlad 2010-04-02 14:33:19

回答

3

只要你沒有對輸出做出決定,你可以在你的C#應用​​程序中創建一個批處理文件,並通過Process.Start(...)啓動它。

您需要生成兩個文件。

首先runDiskPart.bat

 
diskpart /s myScript.dp 

myScript.dp

 
...some commands... 
exit 

顯然名字完全是任意的,但/s指令需要引用你的第二個名稱文件。

+0

批處理文件聽起來很有趣,我設法讓它啓動「diskpart」,但是與之前相同的問題,我如何硬編碼接下來應該執行的操作? 在我的屏幕上顯示「DISKPART>」正在等待輸入,我現在如何添加一個命令讓它工作? 感謝快速回應傢伙btw! :) – Ash 2010-04-02 14:54:12

+0

@Ashh:我已經更新了我的答案。 – 2010-04-02 15:16:56

+0

FWIW,我通過在命令提示符下運行'diskpart /?'來發現這一切。 – 2010-04-02 15:17:17

0

什麼引入的延遲,如Thread.sleep代碼(1000),以使其他過程有時間完成第一命令?

0

你真正想要做的是等待程序退出,然後進入下一次調用。看看這個question

3

經過一番搜索之後,我認爲你可以用腳本文件做你想做的事。閱讀this

因此,使用必要的命令創建script.txt文件後,您可以運行diskpart /s script.txtProcess.Start