C# 运行没有CMD.EXE的批处理命令
我试图在C#应用程序中运行批处理命令。 通常,我会通过以下代码执行此操作:C# 运行没有CMD.EXE的批处理命令,c#,windows,visual-studio,batch-file,cmd,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.ex
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文件。有什么办法可以解决这个问题吗?答案是完全绕过
cmd
,这里不需要它,shutdown
本身就是一个进程,所以直接运行它即可:
Process.Start("shutdown","/s /t 120");
Shutdown
不是批处理命令,而是系统可执行文件。您可以调用它而不是cmd
:
C:\Windows>dir/s shutdown.exe
驱动器C中的卷没有标签。
卷序列号为008A-AC5B
C:\Windows\System32的目录
30-10-2015 08:17 37.376 shutdown.exe
1个文件37.376字节
C:\Windows\SysWOW64的目录
30-10-2015 08:18 33.792 shutdown.exe
1个文件33.792字节
因此,您可以将当前代码替换为:
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();
htis直接运行关机怎么样