【问题标题】:Running batch commands with no CMD.EXE在没有 CMD.EXE 的情况下运行批处理命令
【发布时间】:2016-01-13 13:11:26
【问题描述】:

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

【问题讨论】:

标签: c# windows visual-studio batch-file cmd


【解决方案1】:

答案是完全绕过cmd,这里不需要,shutdown本身就是一个进程,直接运行即可:

Process.Start("shutdown","/s /t 120");

【讨论】:

    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多