[英]Running batch commands with no CMD.EXE
我試圖在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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.