我正在尝试在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
答案 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} }。