簡體   English   中英

運行沒有CMD.EXE的批處理命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM