在执行“命令”时遇到问题或者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位,不确定是否重要。
任何帮助都将非常感激!
我认为您的问题是您试图在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将关闭应用程序。所以本质上,上面的代码将:
- 启动
cmd.exe
进程 - 执行你的参数(在本例中是
/C b.bat
) - 你也可以添加
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";