我需要从.NET Windows应用程序执行命令行。 我尝试使用此代码,但我收到错误
'C:\ Documents'未被识别为 内部或外部命令,可操作 程序或批处理文件。
var command ="\"C:\\Documents and Settings\\Administrator\\My Documents\\test.exe\" \"D:\\abc.pdf\" \"C:\\Documents and Settings\\Administrator\\My Documents\\def.pdf\"";
var processInfo = new ProcessStartInfo("cmd","/c " + command)
{
UseShellExecute = false,
RedirectStandardError = true,
CreateNoWindow = true
};
var p = Process.Start(processInfo);
答案 0 :(得分:6)
我认为你不需要向cmd
炮轰。只需直接调用exe:
var command ="\"C:\\Documents and Settings\\Administrator\\My Documents\\test.exe\" \"D:\\abc.pdf\" \"C:\\Documents and Settings\\Administrator\\My Documents\\def.pdf\"";
var processInfo = new ProcessStartInfo(command)
{
UseShellExecute = false,
RedirectStandardError = true,
CreateNoWindow = true
};
var p = Process.Start(processInfo);
答案 1 :(得分:6)
尝试使用Process.Start的重载版本并传递第二个参数中的参数。
var command = @"C:\Documents and Settings\Administrator\My Documents\test.exe";
var parameters = @"""D:\abc.pdf"" ""C:\Documents and Settings\Administrator\My Documents\def.pdf""";
var p = Process.Start(command, parameters);
这假设您尝试使用pdf文件作为参数调用test.exe。
答案 2 :(得分:0)
除了你不需要通过cmd.exe
开始你的过程(如另一个答案中已经提到的),我认为你需要将命令行参数与名称分开开始的过程;即。尝试类似的东西:
var command = @"C:\...\test.exe";
var arguments = @"D:\abc.pdf ...";
var processInfo = new ProcessStartInfo(command, arguments)
{
CreateNoWindow = true,
... // add other options as needed
};
var p = Process.Start(processInfo);
如您所见,可执行文件的名称和命令行参数已移至ProcessStartInfo
构造函数的单独参数中。 (你显然需要把正确的琴弦放回去;为了清楚起见,我将它们缩写。)