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

时间:2010-06-01 15:49:03

标签: ftp dos

我正在尝试在ASP.NET 2.0中执行DOS命令。我现在所谓的BAT文件反过来调用CMD文件。它的工作原理(最终结果是文件得到了ftp)。但是,我想转储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文件):

ftp.exe -s:C:\MyCMD.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

3 个答案:

答案 0 :(得分:2)

您使用ProcessStartInfo.Arguments移交您的参数:

proc.StartInfo.FileName = @"ftp.exe";
proc.StartInfo.Arguments = @"-s:C:\MyCMD.cmd";

但是 - 这不是你想要的,因为你也想要替换 cmd 文件。但是,内容不是移交给 ftp.exe 的命令行参数。它是一个输入脚本。因此,将内容作为参数传递是行不通的。

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

答案 1 :(得分:0)

使用Process.StartInfo.Arguments

答案 2 :(得分:0)

如果您正在开始一个新进程,只需将ProcessStartInfo.Arguments属性设置为包含所有参数的字符串,就像您在命令行上键入它们一样。

顺便说一句,因为看起来你正在尝试编写命令行FTP客户端的脚本,你可能对CodeProject上的C# FTP Client library感兴趣,或者可能是这个问题的答案之一{{3} }。