在没有CMD.EXE的情况下运行批处理命令
本文关键字:情况下 运行 批处理 命令 EXE CMD | 更新日期: 2023-09-27 18:30:04
我正试图在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文件。有办法解决这个问题吗?
答案是完全绕过cmd
,这里不需要它,shutdown
本身就是一个进程,所以直接运行它:
Process.Start("shutdown","/s /t 120");
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();