繁体   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