运行没有CMD.EXE的批处理命令

时间:2016-01-13 13:11:27

标签: c# windows visual-studio batch-file cmd

我正在尝试在C#应用程序中运行批处理命令。 通常,我会通过以下代码执行此操作:

string command = "shutdown -s -t 120";
Process process = new Process();    
ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.WindowStyle = ProcessWindowStyle.Hidden;   
startInfo.FileName = "cmd.exe"; 
startInfo.Arguments = ("/c" + command); 
process.StartInfo = startInfo;   
process.Start();

但是,我正在为不允许CMD.EXE的网络构建所述应用程序。我可以通过使用" COMMAND.COM"制作* .bat文件来访问命令提示符。在其中的字符串 - 然后我必须手动输入命令。上面的代码不允许我将字符串命令传递给批处理文件,只传递* .exe文件。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:4)

答案是完全绕过cmd,你在这里不需要它,shutdown本身就是一个过程,所以直接运行它:

Process.Start("shutdown","/s /t 120");

答案 1 :(得分:2)

Shutdown不是批处理命令,它是系统可执行文件。您可以调用它而不是cmd

C:\Windows>dir /s shutdown.exe
 Volume in drive C has no label.
 Volume Serial Number is 008A-AC5B

 Directory of C:\Windows\System32

30-10-2015  08:17            37.376 shutdown.exe
               1 File(s)         37.376 bytes

 Directory of C:\Windows\SysWOW64

30-10-2015  08:18            33.792 shutdown.exe
               1 File(s)         33.792 bytes

所以你可以用以下代码替换你当前的代码:

Process process = new Process();    
ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.WindowStyle = ProcessWindowStyle.Hidden;   
startInfo.FileName = "shutdown.exe"; 
startInfo.Arguments = ("-s -t 120"); 
process.StartInfo = startInfo;   
process.Start();