【发布时间】: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