布拉特不承认是命令

时间:2015-09-08 07:54:39

标签: c# blat

我有一个非常奇怪的问题。我将blat.exe放在c:/windows/system32文件夹中安装,我可以从命令行完美地运行它。

当我从C#Process.Start("cmd", "blat.exe blah blah")以编程方式运行它时,它返回错误

  

'blat.exe'未被识别为内部或外部命令,可操作程序或批处理文件。

我也试过提供完整路径,但它只会回复

  

c:/Windows/System32/blat.exe'无法识别...

您有什么想法/建议吗?非常感谢提前。

2 个答案:

答案 0 :(得分:0)

您未将有效参数传递给cmdHere'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的变化同样失败。非常感谢您的帮助