簡體   English   中英

從C#運行FTP命令批處理文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM