我有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启动。如何在后台/静音中执行(至少在没有任何用户交互的情况下)。
答案 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