Как скрыть cmd окно при выполнении пакетного файла?

Вы могли бы интересоваться MSDeploy. Вот сообщение Scott Hanselman на этом. Это только доступно как предварительный технический обзор в данный момент (сентябрь 2008), но стоит оценить против Ваших требований.

21
задан Jon Seigel 8 March 2010 в 02:28
поделиться

3 ответа

Если proc.StartInfo.UseShellExecute имеет значение false , то вы запускаете процесс и можете использовать:

proc.StartInfo.CreateNoWindow = true;

Если proc.StartInfo.UseShellExecute имеет значение true , тогда ОС запускает процесс, и вы должны предоставить «подсказку» процессу через:

proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

Однако вызываемое приложение может проигнорировать этот последний запрос.

Если используется UseShellExecute = false ], вы можете подумать о перенаправлении стандартного вывода / ошибок, чтобы фиксировать любые производимые журналы:

proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.OutputDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
proc.StartInfo.RedirectStandardError = true;
proc.ErrorDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);

И иметь функцию вроде

private void ProcessOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
   if (!String.IsNullOrEmpty(outLine.Data)) // use the output outLine.Data somehow;
}

. Есть хорошая страница, описывающая CreateNoWindow это в блоге MSDN .

В Windows также есть ошибка, которая может вызвать диалоговое окно и заблокировать CreateNoWindow , если вы передаете имя пользователя / пароль. Подробности

http://connect.microsoft. com / VisualStudio / feedback / ViewFeedback.aspx? FeedbackID = 98476 http://support.microsoft.com/?kbid=818858

40
ответ дан 29 November 2019 в 06:52
поделиться

Согласно Свойства процесса , у вас есть:

Свойство: CreateNoWindow
Примечания: Позволяет запускать программу из командной строки в автоматическом режиме . Окно консоли не мигает.

и:

Свойство: WindowStyle
Примечания: Используйте это, чтобы установить окна как скрытые. Автор часто использовал ProcessWindowStyle.Hidden .

В качестве примера!

static void LaunchCommandLineApp()
{
    // For the example
    const string ex1 = "C:\\";
    const string ex2 = "C:\\Dir";

    // Use ProcessStartInfo class
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.CreateNoWindow = false;
    startInfo.UseShellExecute = false;
    startInfo.FileName = "dcm2jpg.exe";
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    startInfo.Arguments = "-f j -o \"" + ex1 + "\" -z 1.0 -s y " + ex2;

    try
    {
        // Start the process with the info we specified.
        // Call WaitForExit and then the using statement will close.
        using (Process exeProcess = Process.Start(startInfo))
        {
            exeProcess.WaitForExit();
        }
    }
    catch
    {
        // Log error.
    }
}
8
ответ дан 29 November 2019 в 06:52
поделиться

Использование: process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

5
ответ дан 29 November 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: