【问题标题】:Run an FTP commands batch file from C#从 C# 运行 FTP 命令批处理文件
【发布时间】:2015-03-09 09:25:14
【问题描述】:

我用 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

【问题讨论】:

  • 你能在这两种情况下将ftp 输出重定向到一个文件并在此处共享输出吗?

标签: c# windows batch-file cmd ftp


【解决方案1】:

我找到了解决问题的方法.. 现在可以正常工作了 :)

通过在 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();

感谢任何花时间在此上的人。希望这对其他人有所帮助。

【讨论】:

  • 我们可以使用同样的方式使用 put 将文件上传到服务器吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 2022-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
相关资源
最近更新 更多