Hide command window windows

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».

Читайте также:  Как менять пароль windows

Как скрыть исполнение файла CMD или BAT

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

Вы можете скрыть вывод выполняемых в консоли команд, добавив в начало файла CMD или BAT строчку @echo off, но чтобы сделать невидимым окно самой командной строки, потребуется нечто иное.

Решение очень простое. Чтобы скрыть исполнение CMD- или BAT-файла, мы прибегнем к помощи другого скрипта, написанного на языке Visual Basic Script.

Откройте Блокнот, Notepad++ или другой текстовый редактор, скопируйте и вставьте в него следующий код:

В данном примере путь к файлу командной строки выглядит как C:\script.cmd, у вас же он может быть другим. Сохраните файл, дав ему произвольное имя и обязательное расширение VBS. Обратите внимание — кавычки в коде должны быть прямыми, иначе при запуске скрипта получите ошибку.

Когда вам нужно будет выполнить файл командной строки, запустите VBS-скрипт, а он в свою очередь запустит ваш «батник», который выполнится в скрытом режиме. Столь раздражающего вас чёрного окна командной строки вы больше не увидите.

Наверное, кто-то из наших читателей спросит: а для чего все эти сложности? Неужели то, что делает файл CMD, не может сделать VBS? Может, просто язык Visual Basic Script знают весьма немногие, а с командной строкой более или менее хорошо знакомы все, кто считает себя продвинутым пользователем.

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

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

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

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

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

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

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

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

Читайте также:  Драйверы для tp link tl wn821n для линукс

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

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

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

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

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

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

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

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

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

Смотрите:

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

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

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

  • Hidden Start (HStart)

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

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

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

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

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

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

Hide command prompt window when using Exec()

I’m trying to execute this simple test script, but a command shell window is appearing after I execute the script.:

How can I prevent it from showing up?

Читайте также:  Windows 10 менять шрифт

Update

I was able to improve it with this code change:

Now the window only shows up for a split second. But I don’t want it to show up at all.

8 Answers 8

You’re always going to get a window flash with Exec() . You can use Run() instead to execute the command in a hidden window. But you can’t directly capture the command’s output with Run() . You’d have to redirect the output to a temporary file that your VBScript could then open, read, and delete.

The FileSystemObject class has methods like GetSpecialFolder() to retrieve the path of Windows temp folder and GetTempName() to generate a temporary filename that you can use instead of hardcoding an output filename as I’ve done above.

Also note that you can use the /FO CSV argument with tasklist.exe to create a CSV file which should make parsing it much easier.

Finally, there are VBScript «native» ways to retrieve the list of running processes. WMI’s Win32_Process class, for example, can do this without the need for Run/Exec .

Edit:

For the sake of completeness, I should mention that your script can relaunch itself in a hidden console window where you can run Exec() silently. Unfortunately, this hidden console window will also hide your output from functions like WScript.Echo() . Aside from that, however, you probably won’t notice any differences running your script under cscript vs wscript . Here’s an example of this method:

Of course, if your script expects command-line parameters, those would need to be forwarded when relaunching your script as well.

how to hide cmd shell window?

on start up i have a bat file run routine things for me

however, the black console pops up and stays open until everything is finished.

anyway to hide it and run it in background ? so it shouldn’t appear minimized or system tray.

6 Answers 6

You can use a VBS script to achieve this. Either write all your code as VBS, or call your batch file like this:

Create a shortcut to the file. On the new shortcut: Right click -> Properties. Go to the Shortcut tab, and choose «Run: Minimized.» (This is assuming you’re on WinXP).

This link should help you as helped me. I used the second solution that uses a program named quiet.exe

To use, just call quiet.exe program params_if_has .

My use example: quiet.exe php script.php

You can’t really do that but if you are using the scheduler to run the batch file you can select «don’t interact with desktop» when creating the job.

I once had a little program which could hide windows based on their title. So my startup batch first set a unique title with title and then called the other program to hide the window with said title. Worked fine but involves a little programming.

If you don’t want to go that way, then you should use the Task Scheduler as tr4656 noted.

Try renaming your file to .cmd instead of .bat .

Or, if you’re executing a .exe try:

Note: When using «start» you have to be at a command prompt.

Оцените статью