Ftp 在.NET中,如何将多个参数发送到DOS命令提示符中?

Ftp 在.NET中,如何将多个参数发送到DOS命令提示符中?,ftp,dos,Ftp,Dos,我正在尝试在ASP.NET 2.0中执行DOS命令。我现在调用的是BAT文件,而BAT文件又调用CMD文件。它可以工作(最终结果是文件被ftp’ed)。但是,我想转储BAT和CMD文件,并在.NET中运行所有内容。将多个参数发送到命令窗口的格式是什么?这是我现在拥有的 .NET代码: System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents = fals

我正在尝试在ASP.NET 2.0中执行DOS命令。我现在调用的是BAT文件,而BAT文件又调用CMD文件。它可以工作(最终结果是文件被ftp’ed)。但是,我想转储BAT和CMD文件,并在.NET中运行所有内容。将多个参数发送到命令窗口的格式是什么?这是我现在拥有的

.NET代码:

    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.EnableRaisingEvents = false;
    proc.StartInfo.FileName = "C:\\MyBat.BAT";
    proc.Start();
    proc.WaitForExit();
Bat文件如下所示(它所做的只是运行cmd文件):

以下是Cmd文件的内容:

open <my host>
<my user name>
<my pw>
quote site cyl pri=1 sec=1 lrecl=1786 blksize=0 recfm=fb retpd=30
put C:\MyDTLFile.dtl 'MyDTLFile.dtl'
quit
打开
报价站点周期优先级=1秒=1LRECL=1786 blksize=0 recfm=fb retpd=30
放置C:\MyDTLFile.dtl'MyDTLFile.dtl'
退出
您用来提交参数的:

proc.StartInfo.FileName = @"ftp.exe";
proc.StartInfo.Arguments = @"-s:C:\MyCMD.cmd";
但是-这不是您想要的,因为您也想替换cmd文件。但是,内容不是移交给ftp.exe的命令行参数。它相当于一个输入脚本。因此,将内容作为参数传递是行不通的


要使cmd文件消失,您必须使用标准输入和输出。例如,请参见。

使用
Process.StartInfo.Arguments

如果要启动新进程,只需将属性设置为包含所有参数的字符串,就像在命令行中键入它们一样


另一方面,由于看起来您正在尝试为命令行FTP客户端编写脚本,因此您可能对on-CodeProject感兴趣,或者可能对这个问题的答案之一感兴趣。

设置字符串。我带你去了。但它们是如何分开的呢?是逗号分隔的命令串吗?@donde:您只能设置一个参数行。不同参数的分隔由您调用的程序给出。例如
ftp.exe-v-n-i-s:mycmd.cmd-A
(这里它们用空格分隔,以破折号开头)。但通过一条以上的线路是不可能的。
proc.StartInfo.FileName = @"ftp.exe";
proc.StartInfo.Arguments = @"-s:C:\MyCMD.cmd";