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

cmd 64-бит от имени администратора

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

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

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

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

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

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

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

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

REGEDIT4

; @ECHO OFF
; CLS
; REGEDIT.EXE /S "%~f0"
; EXIT
[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0]
"ProcessorNameString"="Intel(R) Core(TM) i112-3470 CPU @ 800.5GHz "

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

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

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

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

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

'HideBat.vbs
CreateObject("Wscript.Shell").Run "C:\spec.bat", 0, True

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

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

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

Wscript путь-к-vbs-нику путь-к-bat-нику

Смотрите:

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

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

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

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

  • Hidden Start (HStart)

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

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

  • NirCMD

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

nircmd

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

nircmd elevatecmd exec hide путь-к-файлу

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

nircmd cmdshortcut "~$folder.desktop$" "Батник" elevatecmd exec hide путь-к-файлу

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

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

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

как превратить bat в exe Успехов.

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

  1. То есть данный батник будет скрывать консоль любых команд которые запускаются через командую строку?

    1. Если содержимое команды не противоречит иному, то да. Да, и обратите внимание на тот факт, что статья написана под Windows 7.

  2. Сделал как у вас написано чрез деве кон включение юсби адаптера в ПК.
    Включает, появляется окно консоли. Но вот как то странно выключает.
    В трее нажимаю на значок блютуза правой кнопкой / меню/ отключить адаптер.
    Он то отключает и происходит сигнал ,соответственно значок пропадает из трея.
    То не совсем отключает, значок весит, захожу в ДУ там стрелки нет что устройство отключено.
    Правой кнопкой меню и там весит надпись задействовать. Если нажать выйдет сообщение Параметры оборудования изменены , нужно перезагрузить ПК что бы изменения вступили в силу.
    Не подскажите почему он то нормально отключает устройство то вот такая тема?

  3. И еще, запускаю устройство с созданного ярлыка. Все запустилось, но вот консоль продолжает висеть и ожидает дугой команды. Видимо я что то не то прописал свойствах ярлыка? Или если я ярлык перетащил в панель задач так и должно быть?

    1. Дмитрий, что вы хотите отключать и включать с создаваемых ярлыков? Просто и на пальцах? Мне код устройства ничего, конечно, не говорит. Я на работе сейчас, и быстро не смогу ответить. Какое-то устройство конкретное?

    1. Извиняюсь, только до машины добрался.

      По вашим параметрам попробуйте такой порядок действий (работаю в Windows 7):

      1. Создайте текстовый файл с единственной записью

      C:\Windows\System32\cmd.exe /k devcon.exe enable “USB\VID_0A5C&PID_21EC&REV_0012” /quet

      смените расширение сохранённого файла на .bat. Положите его в корень диска С:\ (самый короткий путь из возможных в Windows) с именем, допустим, 1.bat. Его адрес будет выглядеть как C:\1.bat

      2. На рабочем столе создайте ещё один текстовый файл, в котором укажите следующие две строки:

      ‘HideBat.vbs
      CreateObject(“Wscript.Shell”).Run “C:\1.bat“, 0, True

      где C:\1.bat – путь к недавно созданному батнику отключения устройства. Этому файлу задайте любое имя, но с расширением .vbs. Запускайте и проверяйте.

      3. А вот для VBS-ника уже можно создать любой ярлык, спрятав куда угодно и его самого.

  4. С закрытием окна консоли после выполнения команды решил проблему таки образом
    В свойствах ярлыка изменил букву К на букву С
    C:\Windows\System32\cmd.exe /С devcon.exe enable “USB\VID_0A5C&PID_21EC&REV_0012” /queit
    Тут возникла другая проблема.
    Теперь просто так не отключить адаптер, то есть выключение происходит из подменю значка в трее, но нет сигнал о выключении и прога блютус виновдская весит в трее.
    Но что бы изменения вступили в силу нужно сделать рестарт компа.
    Пользуюсь то же виндоус 7 64я

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

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

Максимальный размер загружаемого файла: 50 МБ. Вы можете загрузить: изображение, видео. Ссылки на YouTube, Facebook, Twitter и другие сервисы, вставленные в текст комментария, будут автоматически встроены. Перетащите файлы сюда