我有一个非常奇怪的问题。我将blat.exe放在c:/windows/system32
文件夹中安装,我可以从命令行完美地运行它。
当我从C#Process.Start("cmd", "blat.exe blah blah")
以编程方式运行它时,它返回错误
'blat.exe'未被识别为内部或外部命令,可操作程序或批处理文件。
我也试过提供完整路径,但它只会回复
c:/Windows/System32/blat.exe'无法识别...
您有什么想法/建议吗?非常感谢提前。
答案 0 :(得分:0)
您未将有效参数传递给cmd
。 Here's一些文档。
基本上,如果你想用运行blat.exe然后终止的参数启动cmd,你需要传递/C "blat.exe blah blah"
。像这样:
Process.Start("cmd", "/C \"blat.exe blah blah\"")
但是,正如有人已在评论中说明的那样,您也可以直接运行blat.exe。
答案 1 :(得分:0)
我会说Damien_The_Unbeliever是对的。我只是将blat从windows目录移动到c:/blat/blat.exe,它运行正常。为了完整性和原谅我以前的等等,等等,等等,失败的命令是
static void ExecuteCommandSync(object command)
{
try
{
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo(@"C:/Windows/System32/blat.exe", "-server 127.0.0.1:1099 -subject Hello -to myname@gmail.com -body theBody -p gmailsmtp -from myname@gmail.com");
System.Diagnostics.Process process;
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
process = System.Diagnostics.Process.Start(procStartInfo);
process.WaitForExit();
var output = process.StandardOutput.ReadToEnd();
var error = process.StandardError.ReadToEnd();
var exitCode = process.ExitCode;
Console.WriteLine(error);
process.Close();
}
catch (Exception objException)
{
// to be logged
}
}
cmd.exe / c c:/Windows/System32/blat.exe的变化同样失败。非常感谢您的帮助