我需要从c#运行批处理文件(或cmd)。我的代码很简单:
Process.Start(@"C:\b.bat");
Process.Start(@"cmd.exe");
我也尝试了Executing Batch File in C#和许多其他网站,但我不认为问题与语法有关。
错误发生在上面的任一行,我用Google搜索但找不到解决我特定问题的方法:
“System.ComponentModel.Win32Exception”类型的未处理异常 发生在System.dll中的附加信息:指定的可执行文件不是有效的应用程序 这个OS平台。
奇怪的是这些代码没有问题:
Process.Start(@"IExplore.exe");
Process.Start("notepad");
我正在运行visual studio 2012并为x86编译,但我的操作系统是64位的Windows 7,不确定它是否重要。程序中的其他任何内容运行正常。
任何帮助将不胜感激!
答案 0 :(得分:1)
我认为您的问题是您正试图在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
。答案 1 :(得分:0)
Process.Start(@"C:\b.bat");
应该可行,但将其置于根目录可能会导致问题。尝试将bat文件移动到项目目录,并将绝对路径放到文件中。例如,我刚用Process.Start(@"""C:\dev\ConsoleApplication1\ConsoleApplication1\test.bat""");
答案 2 :(得分:0)
我通过使用此命令运行32位cmd来解决问题:
proc.StartInfo.FileName = @“C:\ windows \ system32 \ cmd.exe”;