C#呼叫cmd執行ftp命令
1、C#執行cmd命令
public string ExeCommand()
{
Process p = new Process(); //例項一個Process類,啟動一個獨立程序
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false; //關閉Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向標準輸入
p.StartInfo.RedirectStandardOutput = true; //重定向標準輸出
p.StartInfo.RedirectStandardError = true; //重定向錯誤輸出
p.StartInfo.CreateNoWindow = true; //設定不顯示視窗
string strOutput = null;
try
{
p.Start();
p.StandardInput.WriteLine("ftp -is:\"E:\\aolixia\\ftpcmd.in\ " 134.*.*.*");
p.StandardInput.WriteLine("exit");
StreamReader reader = p.StandardOutput;//擷取輸出流
string line = reader.ReadLine();//每次讀取一行
while (!reader.EndOfStream)
{
tbResult += line + "\n";
line = reader.ReadLine();
}
// p.StandardInput.WriteLine("ping 134.224.48.78");
// p.StandardInput.WriteLine("exit");
// strOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
}
catch (Exception e)
{
strOutput = e.Message;
}
return strOutput;
}
2、 由於在執行cmd的ftp命令時,需要使用者輸入使用者名稱和密碼,這個一直沒找到一個很好的方法。
看到KingGoo技術部落格的《dos通過呼叫配置檔案自動執行FTP操作》
配置一個ftpcmd.in檔案
檔案內容是
ftpuser
ftppass
pwd (檢視當前目錄)
cd tlh (轉到tlh目錄下)
dir
bye
第一二行分別是帳號密碼,後面接著是您需要執行的ftp命令
cmd下執行如下命令
ftp -is:"E:\aolixia\ftpcmd.in " 134.*.*.*
3、用以上的ExeCommand()函式可以執行ftp命令。但是還有一些問題希望得到提點。
就是,由於ftp下的命令是固定寫在了.in檔案中,但是在程式中,我可能需要呼叫該函式上傳檔案,
並重命名ftp上的某個檔案。 那我只能去修改.in檔案,而不能通過對ExeCommand()傳入引數即可實現。
對於這點 有什麼好的解決辦法麼?