【发布时间】:2011-08-23 20:32:18
【问题描述】:
我有这个 BAT 文件“iARP.BAT”
Content Begin
@ECHO OFF
npg -vv -f %1 -d %2
Content End
我正在尝试将文件名(在循环中)作为第一个参数传递,将设备名称(先前声明的变量)作为第二个参数传递。我正在尝试这样做:
for (int i = 1; i < arpFiles.Count; i++) {
p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.WorkingDirectory = Application.StartupPath;
p.StartInfo.FileName = Application.StartupPath + "\\iARP.bat";
String argument1 = Application.StartupPath + "\\" + arpFiles[0].Name;
p.StartInfo.Arguments = argument1 + deviceName;
p.StartInfo.Verb = "runas";
p.StartInfo.CreateNoWindow = true;
p.Start();
}
顺便说一句 arpFiles = 列表 但它没有执行任何人都可以帮助我吗?
【问题讨论】:
-
我建议添加这一行:
ProcessStartInfo si = p.StartInfo,并将您的代码更改为:si.UseShellExecute = false;等。或者只是创建一个新的ProcessStartInfo结构并使用初始化语法:p.StartInfo = new ProcessStartInfo() { UseShellExecute = true, /* etc */ };。少重复:) -
为什么调用一个除了运行另一个命令什么都不做的批处理文件?为什么不直接运行命令?
标签: c# .net batch-file command-line-arguments process.start