2010-06-01 25 views
1

我想在ASP.NET 2.0中執行DOS命令。我現在所稱的BAT文件反過來稱爲CMD文件。它的工作原理(最終結果是一個文件被ftp處理)。但是,我想轉儲BAT和CMD文件並在.NET中運行所有內容。將多個參數發送到命令窗口的格式是什麼?這是我現在擁有的。在.NET中,如何將多個參數發送到DOS命令提示符?

的.NET代碼:

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
    proc.EnableRaisingEvents = false; 
    proc.StartInfo.FileName = "C:\\MyBat.BAT"; 
    proc.Start(); 
    proc.WaitForExit(); 

BAT文件看起來是這樣的(它是所有運行CMD文件):

ftp.exe -s:C:\MyCMD.cmd 

這裏是Cmd的文件的內容:

open <my host> 
<my user name> 
<my pw> 
quote site cyl pri=1 sec=1 lrecl=1786 blksize=0 recfm=fb retpd=30 
put C:\MyDTLFile.dtl 'MyDTLFile.dtl' 
quit 

回答

2

您使用ProcessStartInfo.Arguments到你的論點拱手道:

proc.StartInfo.FileName = @"ftp.exe"; 
proc.StartInfo.Arguments = @"-s:C:\MyCMD.cmd"; 

但是 - 這不是你想要的,因爲你也想替換cmd文件。但是,該內容不是一個命令行參數,它被移交給ftp.exe。這是一個輸入腳本。因此,將內容作爲參數傳遞是行不通的。

要使即使cmd文件消失,您也必須使用標準輸入和輸出。例如參見Process.StandardInput

0

使用Process.StartInfo.Arguments

0

如果您正在開始一個新進程,只需將ProcessStartInfo.Arguments屬性設置爲包含所有參數的字符串,就好像您已經在命令行上鍵入它們一樣。另外,由於看起來您正嘗試編寫命令行FTP客戶端腳本,因此您可能對CodeProject上的C# FTP Client library感興趣,或者可能是對other StackOverflow question的答案之一。

+0

設置字符串。我把你帶到了那裏。但他們是如何分開的?它是一串逗號分隔的命令嗎? – donde 2010-06-01 16:07:09

+1

@donde:你只能設置一個參數行。不同參數的分離由您所調用的程序給出。例如'ftp.exe -v -n -i -s:mycmd.cmd -A'(這裏它們被一個空格分開並以短劃線開頭)。但**通過多條線是不可能的**。 – tanascius 2010-06-01 16:19:24

相關問題