Перейти к содержимому

Как скрыть командную строку

  • автор:

Hide the Console in Batch Files

If we run a batch file by starting it manually, we usually don’t mind seeing the «black square» of the console window.
If, on the other hand, we run a batch file scheduled, or remotely, we often would prefer not to see the «black square» at all.

Several tools and techniques exist to hide a console window.

Start a batch file minimized

The most simple solution is to run the batch file minimized.
The batch file will still be visible in the task bar while running.
For batch file started by a shortcut, this may be «sufficiently hidden».

See this JSIFaq tip on how to make a batch file start another batch file hidden (uses a temporary VBScript file).
Note that, because the script is created and called by a batch file, there will still be a visible console window.

Or download and use my RunNHide.vbs or RunNHide.exe.

Make a batch file minimize its own console

Use one of the following commands within a batch file to minimize that batch file’s console window:

Make a batch file hide its own console

Use one of the following commands within a batch file to hide that batch file’s console window:

Spoiler alert: completely hiding the console is not possible in the standard command interpreters CMD.EXE or COMMAND.COM.
All techniques to hide the console that have to be called from within the batch file will always show at least a short «black flash» of the console being opened before it is hidden.
Therefore, the «cloaking» of the console has to be started before starting the batch file, which means using an alternative scripting language to start the command interpreter hidden.

To restore console visibility, use:

Start a batch file minimized

If a console window is visible already, but you want to start another batch file minimized, use one of the following commands:

Start a batch file hidden

If a console window is visible already, but you want to start another batch file hidden, use one of the following commands:

Run a batch file completely hidden

To completely hide the console, a Windows (GUI) executable or an alternative scripting language with GUI based interpreter (e.g. VBScript with WSCRIPT.EXE) has to be used.
Do not use the following commands in a batch file, as this batch file will run in a (visible) console window itself.

Make sure the batch file closes its own window in all circumstances, because you won’t be able to see whether it does close or keep running «forever».

Как спрятать окно cmd при исполнении batch?

В статье описываются различные способы того, как спрятать окно cmd во время исполнения batch файла.

Батники, они же batch файлы, бывают очень полезны для запуска целого пакета команд. Но, думаю, многие задаются вопросом, как сделать так, чтобы окно консоли при этом не появлялось на мониторе. Основной упор я сделаю на встроенные возможности системы, упомяну вскользь программы сторонних разработчиков. Попутно мы решим некоторые другие задачи, например, добавив отдельный для батника ярлык.

Как миновать защиту UAC? Обратитесь к статье Как обойти UAC в Windows

Как спрятать окно cmd. Можно ли это сделать средствами самого батника?

Нет. Работа кода производится в среде консоли, а значит окно будет отображаться. С этим нужно смириться: окно будет открытым до тех пор, пока исполняется код. Всё, что вы можете сделать, это предпринять некоторые шаги, дабы окно появлялось на минимальный отрезок времени. В принципе это полезно: работу кода мы можем наблюдать воочию. Но если хочется скрыть окно консоли, для этого придётся использовать сторонние средства: других разработчиков или возможности самой Windows. С неё и начнём.

Запустить batch файл незаметно. Только Windows.

В самом файле «безумству кода» вы пойте песню сами. Я же предложу оптимизировать его содержание для максимально тихой работы. Здесь есть важный момент: чем короче сам код, тем больше вероятность того, что окно консоли появится на короткое время. Если объём большой или прописывается сразу несколько команд, окно может привлечь внимание. Для примера возьму код скрипта, который в Windows 7 позволяет немного изменить системную информацию о компьютере (конкретно, характеристики процессора в Свойствах системы ). Делается это на время сеанса Windows: после перезагрузки всё станет на свои места.

Вобщем, имеем следующий код батника:

] «ProcessorNameString»=»Intel(R) Core(TM) i112-3470 CPU @ 800.5GHz «

Обратите внимание на характеристики процессора . Он и будет отвечать за изменение системной информации. Присваиваем файлу имя spec . bat . Также обратите внимание, я буду использовать только латинские символы в именах файлов и избегать в путях к их месторасположению кириллицы, дабы дорожка к скрипту читались системой правильно. Потому и положу созданный бат-файл в системную директорию — прямо в диск С: .

батник в корне диска С

Однако его запуск сопровождается:

  • появлением окна консоли cmd
  • появлением окна UAC с подтверждением с проделываемыми изменениями (задача, как видите, усложнилась сама по себе, ибо меняется системная информация)

окно консоли и UAC

перед исполнением батника появляется окно UAC

От первого окошка я предлагаю вам избавиться с помощью следующего скрипта, оформленного уже в очередной, vbs-файл . А вот и к нему скрипт (смотрите — мой путь к файлу C:\spec.bat ):

Назову любым именем с расширением .vbs . Теперь работа батника по нажатии на vbs -ник сопровождается лишь появлением окна Контроля учётных записей : дело в том, что изменения, проделываемые батником касаются реестра, а система логично не пропускает это бесконтрольно. Как запускать программу без UAC — это тема отдельной статьи:

скрыть cmd через vbs

Однако мы немного отвлечёмся от темы статьи и закончим начатое, создав для файла сокрытия консоли (vbs-файла) специальный ярлык. В поле Расположения объекта укажем путь в формате:

Смотрите:

ярлык для vbs-файла

Ярлык готов (можете сменить его рисунок через Свойства ярлыка). Его можно закинуть на выбор в папку Автозагрузки, поместить в Планировщик Windows или запускать двойным щелчком мыши. Окна консоли не будет.

Как спрятать окно cmd? Специальные программы.

Их немало, они легковесны и просты в использовании. Минус — их нужно скачивать, и некоторые устанавливать. Приведу самые популярные из них:

  • Hidden Start (HStart)

Утилита отечественного производителя. Нужно покупать, стоимости не знаю. Однако с её помощью можно скрыть окно раз и навсегда, и не важно, требуется ли подтверждение UAC или нет — его тоже можно скрыть:

окно программы hidden start

  • NirCMD

Для 32-х и 64-х битных версий. Установки не требует, поставляется в виде исполнительного файла, который при запуске (от имени админа) сразу просится в корневой каталог Windows. Согласимся, и она теперь с нами:

nircmd

Утилита много чего умеет, в том числе менять уровень звука, открывать лотки привода и т.д. Для нашего случая, чтобы спрятать окно cmd , можно было бы просто ввести команду в виде:

От окна UAC не избавились (elevatecmd exec и есть часть команды с запросом на UAC), но нам и не обещалось. И постоянно прописывать в консоли полный путь к файлу неудобно, потому сразу создадим ярлык:

как спрятать окно cmd при помощи nircmd

Как спрятать окно cmd: batch превратился в exe.

Тоже вариант. Это уже музыка высших сфер. Кому эта утилита неизвестна, знакомьтесь — пригодится: Bat To Exe Converter . Как вы поняли по названию, превращает батник в исполнительный файл с расширением .exe. Качаем, устанавливаем, пользуемся:

как превратить bat в exe

Успехов.

Спрятать окно консоли

Как спрятать консольное окно?
Для полного счастья осталось окно спрятать. cmdow.exe с ключом /HID мне поможет?

Спрятать окно при запуске приложения
Необходимо запустить программу, но, чтобы главная форма находилась в скрытом состоянии. Должен.

Как спрятать папку с картинками при открытии консоли браузера в вкладке sources?
Когда открываю консоль браузера там есть source и там видна папка с картинками, мне её надо спрятать

Спрятать окно чужой программы до его появления
Есть у меня МФУ Canon MG5140. Отличная штука. Позволяет сканировать прямо с самого МФУ. Но при.

How can I run a windows batch file but hide the command window?

How can I run a windows batch file but hiding the command window? I dont want cmd.exe to be visible on screen when the file is being executed. Is this possible?

barfoon's user avatar

10 Answers 10

If you write an unmanaged program and use CreateProcess API then you should initialize lpStartupInfo parameter of the type STARTUPINFO so that wShowWindow field of the struct is SW_HIDE and not forget to use STARTF_USESHOWWINDOW flag in the dwFlags field of STARTUPINFO. Another method is to use CREATE_NO_WINDOW flag of dwCreationFlags parameter. The same trick work also with ShellExecute and ShellExecuteEx functions.

If you write a managed application you should follows advices from http://blogs.msdn.com/b/jmstall/archive/2006/09/28/createnowindow.aspx: initialize ProcessStartInfo with CreateNoWindow = true and UseShellExecute = false and then use as a parameter of . Exactly like in case of you can set property WindowStyle of ProcessStartInfo to ProcessWindowStyle.Hidden instead or together with CreateNoWindow = true .

You can use a VBS script which you start with wcsript.exe. Inside the script you can use CreateObject("WScript.Shell") and then Run with 0 as the second ( intWindowStyle ) parameter. See http://www.robvanderwoude.com/files/runnhide_vbs.txt as an example. I can continue with Kix, PowerShell and so on.

If you don’t want to write any program you can use any existing utility like CMDOW /RUN /HID "c:\SomeDir\MyBatch.cmd", hstart /NOWINDOW /D=c:\scripts "c:\scripts\mybatch.bat", hstart /NOCONSOLE "batch_file_1.bat" which do exactly the same. I am sure that you will find much more such kind of free utilities.

In some scenario (for example starting from UNC path) it is important to set also a working directory to some local path ( %SystemRoot%\system32 work always). This can be important for usage any from above listed variants of starting hidden batch.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *