从C#执行.cmd文件,没有任何弹出窗口

时间:2017-02-28 13:45:28

标签: c# batch-file

我有C#程序,它找到插入的USB的驱动器号,并将其分配给变量_usbDriveLetter

我需要将_usbDriveLetter的值传递给批处理文件,该文件进一步执行CHKDSK _usbDriveLetter命令。

我有以下代码来传递_usbDriveLetter的值并执行批处理文件。

        string _usbDriveLetter = @"F:\"; //For testing here
        string MyBatchFile = @"<FILEPATH>\chkdsk.cmd";

        ProcessStartInfo proc = new ProcessStartInfo();
        proc.CreateNoWindow = true;
        proc.FileName = MyBatchFile;
        proc.Arguments = usbDriveLetter ;
        Process.Start(proc);

问题:只要代码到达执行批处理的行,就会出现以下窗口以允许CMD.exe启动。如何在后台/静音中执行(至少在没有任何用户交互的情况下)。

enter image description here

2 个答案:

答案 0 :(得分:1)

这应该有用。

Process runprogram = new Process();
                            ProcessStartInfo programinfo = new ProcessStartInfo();
                            programinfo.WindowStyle = ProcessWindowStyle.Hidden;
                            programinfo.CreateNoWindow = true;
                            programinfo.UseShellExecute = false;
                            programinfo.RedirectStandardOutput = true;
                            programinfo.FileName = "cmd.exe";
                            programinfo.Arguments = " /C \"<FILEPATH>\chkdsk.cmd\"";
                            runprogram.StartInfo = programinfo;
                            runprogram.Start();

首次运行程序时还要求提升权限。

答案 1 :(得分:0)

您可以尝试将.cmd转换为.exe并将该属性设置为不可见,然后从C#运行EXE

这是执行此操作的资源 - http://www.f2ko.de/en/ob2e.php