[英]Run an FTP commands batch file from C#
我已經用C#編寫了一個winform應用程序,該程序可以修改腳本文件(服務器地址等)中的FTP命令,然后執行一個批處理文件,該文件應該從命令提示符處啟動FTP並根據腳本下載文件。
當我運行應用程序外部的批處理文件時(從命令提示符或雙擊),文件下載正常,但是從應用程序執行批處理時什么也沒有發生...
我還注意到以下差異:在外部運行批處理時,我在cmd窗口中看到“ ftp> open 10.1.1.1”。 從應用程序運行批處理時,我在cmd窗口中看到“打開10.1.1.1”(缺少“ ftp>”)。
我的猜測是我沒有正確使用System.Diagnostics.Process()...
C#相關部分:
private void button1_Click(object sender, EventArgs e)
{
var cmd = new System.Diagnostics.Process();
cmd.StartInfo.FileName = "runFTP.bat";
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.WorkingDirectory = path;
cmd.Start();
cmd.WaitForExit();
cmd.Close();
}
}
批處理文件(runFTP.bat):
echo off
@echo Downloading files...
REM ==Start FTP with script==
ftp -i -s:ftpCmd.txt
del ftpCmd.txt
@echo Done!
@echo Exiting...
FTP腳本文件(ftpCmd.txt):
open 10.1.1.1
user
password
bin
cd /rootFolder/new
lcd C:\Downloads
mget *.*
bye
我找到了解決我的問題的方法。
通過在C#中添加以下System.Diagnostics.Process()StartInfo參數並將其更改為false,我可以下載文件並在命令提示符下獲取缺少的“ ftp>”。
修改后的C#代碼如下所示
var cmd = new System.Diagnostics.Process();
cmd.StartInfo.FileName = "runFTP.bat";
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.RedirectStandardInput = false;
cmd.StartInfo.RedirectStandardOutput = false;
cmd.StartInfo.WorkingDirectory = path;
cmd.Start();
cmd.WaitForExit();
cmd.Close();
多虧有人在此上花費了時間。.希望這會有助於其他人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.