我正在尝试在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文件。有没有办法解决这个问题?
答案 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();