2010-06-01 22 views
1

我想在ASP.NET 2.0中执行DOS命令。我现在所称的BAT文件反过来称为CMD文件。它的工作原理(最终结果是一个文件被ftp处理)。但是,我想转储BAT和CMD文件并在.NET中运行所有内容。将多个参数发送到命令窗口的格式是什么?这是我现在拥有的。在.NET中,如何将多个参数发送到DOS命令提示符?

的.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 

回答

2

您使用ProcessStartInfo.Arguments到你的论点拱手道:

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

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

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

0

使用Process.StartInfo.Arguments

0

如果您正在开始一个新进程,只需将ProcessStartInfo.Arguments属性设置为包含所有参数的字符串,就好像您已经在命令行上键入它们一样。另外,由于看起来您正尝试编写命令行FTP客户端脚本,因此您可能对CodeProject上的C# FTP Client library感兴趣,或者可能是对other StackOverflow question的答案之一。

+0

设置字符串。我把你带到了那里。但他们是如何分开的?它是一串逗号分隔的命令吗? – donde 2010-06-01 16:07:09

+1

@donde:你只能设置一个参数行。不同参数的分离由您所调用的程序给出。例如'ftp.exe -v -n -i -s:mycmd.cmd -A'(这里它们被一个空格分开并以短划线开头)。但**通过多条线是不可能的**。 – tanascius 2010-06-01 16:19:24

相关问题