布拉特不被认为是命令
本文关键字:命令 认为是 布拉特 | 更新日期: 2023-09-27 18:11:43
我遇到一个很奇怪的问题。我将blit .exe安装在c:/windows/system32
文件夹中,我可以从命令行完美地运行它。
当我从c# Process.Start("cmd", "blat.exe blah blah")
以编程方式运行它时,它返回错误
'blat.exe'无法识别为内部或外部命令,可操作程序或批处理文件。
我也试着给出完整的路径,但它只会回复
你有什么想法/建议吗?提前谢谢你。c:/Windows/System32/blit .exe'无法识别…
您没有向cmd
传递有效参数。这里有一些文档。
基本上,如果你想用它应该运行blit .exe然后终止的参数启动cmd,你需要传递/C "blat.exe blah blah"
。像这样:
Process.Start("cmd", "/C '"blat.exe blah blah'"")
然而,正如有人已经在评论中说过的,你不妨直接运行blit .exe。
我想说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/blit .exe的变化同样失败。非常感谢您的帮助