在执行“命令”时遇到问题或者c#中的批处理文件

本文关键字:或者 批处理文件 问题 遇到 执行 命令 | 更新日期: 2023-09-27 18:17:40

我需要从c#运行批处理文件(或cmd)。我的代码是这么简单的:

 Process.Start(@"C:'b.bat");
Process.Start(@"cmd.exe");

我也尝试过在c#中执行批处理文件,以及许多其他网站,但我不认为问题与语法有关。

上面的任何一行都会发生错误,我已经谷歌过了,但没有找到解决我的特定问题的方法:

类型为'System.ComponentModel.Win32Exception'的未处理异常附加信息:指定的可执行文件不是有效的应用程序

奇怪的是,这些代码运行起来没有问题:

Process.Start(@"IExplore.exe");
Process.Start("notepad");

我正在运行visual studio 2012并编译x86,但我的操作系统是windows 7 64位,不确定是否重要。

任何帮助都将非常感激!

在执行“命令”时遇到问题或者c#中的批处理文件

我认为您的问题是您试图在Process.Start(@"C:'b.bat")中启动未知进程。当我这样做时,我使用以下命令:

        string cmd = "/C b.bat";
        var m_command = new System.Diagnostics.Process();
        m_command.StartInfo.FileName = @"cmd.exe";
        m_command.StartInfo.Arguments = cmd;
        m_command.Start();

完成后/C将关闭应用程序。所以本质上,上面的代码将:

  1. 启动cmd.exe进程
  2. 执行你的参数(在本例中是/C b.bat)
  3. 你也可以添加m_command.WaitForExit(),如果你想让程序等待b.bat完成执行前继续。

Process.Start(@"C:'b.bat");应该可以工作,但是将其放入根目录可能会导致问题。尝试将bat文件移动到项目目录,并将文件的绝对路径放入。例如,我刚刚成功地使用了Process.Start(@"""C:'dev'ConsoleApplication1'ConsoleApplication1'test.bat""");

我用下面的命令运行32位cmd来解决这个问题:

proc.StartInfo。文件名= @ " C: ' windows ' system32系统'用于cmd . exe";