2011-11-01 131 views
0

我在C#中使用命令提示符下的「複製」命令以編程方式連接mpg格式的視頻文件。我能夠在命令提示符下手動執行命令,並且它可以很好地工作。命令提示符中的「複製」命令出錯

Copy /b D:\\ccc\\out0.mpg /b + D:\\ccc\\out1.mpg /b D:\\ccc\\bMPGVideo.mpg /b 

但是,當我以編程方式執行相同的命令,它會引發錯誤。

strCmdText = "/K Copy /b D:\\ccc\\out0.mpg /b + D:\\ccc\\out1.mpg /b D:\\ccc\bigMPGVideo.mpg /b"; 
System.Diagnostics.Process p = new System.Diagnostics.Process();    
p.StartInfo.UseShellExecute = false; 
p.StartInfo.FileName = "CMD.exe"; 
p.StartInfo.Arguments = strCmdText; 
p.StartInfo.RedirectStandardError = true; 
p.Start(); 
MessageBox.Show(p.StandardError.ReadToEnd()); 

該消息框顯示follwing消息

句柄無效
文件名,目錄名或卷標無效
句柄無效
句柄無效

有人可以這個幫助我嗎?

+2

你很可能沒有這個權利這樣做。嘗試以管理員身份運行應用程序。那就是說,爲什麼不使用.NET BCL呢? – Polity

回答

3

D:\\ccc\bigMPGVideo.mpg應該是D:\\ccc\\bigMPGVideo.mpg

編輯 - 按評論:

// create target file 
using (FileStream Tgt = File.Create (@"D:\ccc\bigMPGVideo.mpg")) 
{ 
    // append out0.mpg to target 
    using (FileStream Out0 = File.Open (@"D:\ccc\out0.mpg")) 
    { 
     Out0.CopyTo (Tgt); 
    } 
    // append out1.mpg to target 
    using (FileStream Out1 = File.Open (@"D:\ccc\out1.mpg")) 
    { 
     Out1.CopyTo (Tgt); 
    } 
} 
+0

這是發佈該問題時的錯字。它們都在cmd中工作,但不是來自代碼。 – Niranjan

+0

在命令提示符下手動運行時,如果在輸出文件的名稱之前將'\'替換爲'\\',則不會有任何區別。但是,如果在命令中完成相同的更改並以編程方式運行,則會引發另一個錯誤。拋出的錯誤是: 句柄無效。 系統找不到指定的文件。 – Niranjan

+0

爲什麼使用'copy'連接文件? .NET有很多內置的文件處理代碼,可以做到這一點...... – Yahia