布拉特不被认为是命令

本文关键字:命令 认为是 布拉特 | 更新日期: 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的变化同样失败。非常感谢您的帮助