Как скрыть окно cmd при работе bat файла
Перейти к содержимому

Как скрыть окно cmd при работе bat файла

  • автор:

Как скрыть запуск окна cmd или bat — Решено!

При запуске скрипта запускается окно консоли и сразу исчезает.

Решить данную проблему можно скриптом .vbs

Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "C:\Windows\Drivers_P\win10\temp\spool2\spool2.bat" & Chr(34), 0 Set WshShell = Nothing

Где: C:\Windows\Drivers_P\win10\temp\spool2\spool2.bat адрес к исполняемому файлу.

Усложним задачку, поместив данный скрипт в path и получим доступ по Win+R.

Для этого нам нужно зайти в реестр и добавить каталог с параметрами.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Сам файл 001.vbs содержит ссылку на .bat файл, который и требовалось сделать скрытым при запуске.

Теперь если нажать сочетание клавиш Win+R и ввести spool2

откроется папка по адресу: C:\Windows\System32\spool\PRINTERS

Вот что находится внутри файла spool2.bat

@echo off start C:\Windows\System32\spool\PRINTERS

P.S.

Желательно проверить права на папку PRINTERS

Скрыть командную строку во время выполнения

Все работает, но появляется на несколько секунд окно командной строки.
Как скрыть командную строку во время выполнения?
Команда @echo off не помогает.

BAT файл запускается в Планировщике задания по расписанию с наивысшими правами.
Windows 10

Буду благодарен советам.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как скрыть командную строку?
Хочу создать CMD (или BAT) файл, при нажатие на который создаются 10 нумерованных папок на диске С.

Как скрыть командную строку у FFDSHOW?
В последние два дня происходит странная ерунда. У всех приложений, работающих с видео, будь то.

PyQt: как скрыть командную строку?
Здравствуйте. Начал разбираться в PyQt и возник такой вопрос. Когда с помощью pyinstaller я собираю.

Как скрыть командную строку в Эксешном приложении
Всем привет. Я перевел свое приложение, написанное на python в эксешник-приложение, но при открытии.

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

Консоль все равно открывается. Командой nul добился скрытия обратного отсчёта таймера. Но как сделать так, чтобы консоль вообще не открывалась?

Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как запустить командную строку?
Запустите командную строку и с помощью операции команды /? Изучите предназначение,формат и.

Как заархивировать файлы через Командную строку?
Как заархивировать все файлы ( …) из каталога К и поместить их архив Ar на диск F и запустить.

Как добавить файлы в архив через командную строку
Привет Всем! Нужна ваша помощь . Нужно добавить содержимое папки (C:\Users\****\Desktop\new1) в.

Как сделать флешку установочной через Командную строку Windows?
Всем доброго времени суток. Мне такую задачу дали что надо сделать так чтобы при подключении флешки.

2522 / 1010 / 460
Регистрация: 29.05.2016
Сообщений: 4,310
Royal_X, добавьте в начало Вашего кода строчку:

nircmd win hide title "%ComSpec%"

Примечание.
Для работы функционала необходима утилита nircmd (во вложении). Рекомендую закинуть в C:\windows\system32

Вложения

nircmd.rar (41.6 Кб, 12 просмотров)

2419 / 1039 / 371
Регистрация: 01.06.2021
Сообщений: 3,708
Karen87, сторонними утилитами не пойдет, нужно как-то без них
5922 / 2612 / 1030
Регистрация: 06.06.2017
Сообщений: 8,900

ЦитатаСообщение от Royal_X Посмотреть сообщение

Хочу создать CMD (или BAT) файл, . В то же время не хочу, чтобы открывалась командная строка (консоль).

Консольное приложение при классическом запуске всегда будет появляться. Командная строка и консоль — разные сущности. Хотим отстуствия консоли, пересаживаемся на js/vbs.

2419 / 1039 / 371
Регистрация: 01.06.2021
Сообщений: 3,708

FlasherX, ладно, пусть появляется на несколько миллисекунд, как это в первом коде. Но нельзя ли сделать так же во втором коде с использованием timeout?

5922 / 2612 / 1030
Регистрация: 06.06.2017
Сообщений: 8,900
Royal_X, а зачем тут таймаут? В таймкодах нужна разница в секунду?
2419 / 1039 / 371
Регистрация: 01.06.2021
Сообщений: 3,708

FlasherX, это просто для примера, хочу понять как создать батник, который в тихом режиме создаёт нумерованные папки, причем создаёт папки не сразу, а после каждой папки ждёт определенное количество времени.

5922 / 2612 / 1030
Регистрация: 06.06.2017
Сообщений: 8,900

Лучший ответ

Сообщение было отмечено Royal_X как решение

Решение

1 2 3 4 5 6 7 8 9 10
@set @a=0/* @echo off if "%1" neq "x" ( cscript /e:jscript "%~f0" ) else ( cd /d C: for /l %%d in (1,1,5) do md %%d &if %%d neq 5 >nul timeout 1 ) exit */WSH.CreateObject('WScript.Shell').Run('"'+WSH.ScriptFullName+'" x',0)

Royal_X, только смысл?
2419 / 1039 / 371
Регистрация: 01.06.2021
Сообщений: 3,708

ЦитатаСообщение от FlasherX Посмотреть сообщение

только смысл?
нет смысла, просто исследую возможности командной строки
5922 / 2612 / 1030
Регистрация: 06.06.2017
Сообщений: 8,900
Royal_X, комстрока тут ни при чём. И лучше исследовать другие возможности. Например:

with(WSH.CreateObject('Shell.Application').nameSpace('C:')){for(i=1;i6;i++){newFolder(i)}}

Эксперт Python

5415 / 3839 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

ЦитатаСообщение от Royal_X Посмотреть сообщение

просто исследую возможности командной строки

У нее нет никаких возможностей. Если подразумевать под КС — интерпретатор cmd.
Совсем другое дело powershell. Но он не для школьников.

2419 / 1039 / 371
Регистрация: 01.06.2021
Сообщений: 3,708

Garry Galler, зачем мне этот powershell, если я знаю, как в нем это делать. Я спрашивал именно по командной строке.

Эксперт Python

5415 / 3839 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

ЦитатаСообщение от Royal_X Посмотреть сообщение

зачем мне этот powershell, если я знаю, как в нем это делать

Если знаешь — хорошо. Но cmd (и язык batch) не имеет никаких особых встроенных возможностей.
Там нечего изучать. Там просто нужно для любой более менее сложной операции придумывать свой собственный велосипед из-за полного отсутствия встроенных функций.
Любишь извращения? Добро пожаловать в программирование на cmd 🙂

2419 / 1039 / 371
Регистрация: 01.06.2021
Сообщений: 3,708

Garry Galler, ну иногда cmd бывает удобен, например я использую его для удаления служб (sc delete) — команда короче, чем в Powershell.

5922 / 2612 / 1030
Регистрация: 06.06.2017
Сообщений: 8,900

ЦитатаСообщение от Royal_X Посмотреть сообщение

нужно, чтобы консоль вообще не отображалась.

ЦитатаСообщение от Royal_X Посмотреть сообщение

я знаю, как в нем это делать.

Если речь про -w Hidden , то оно того не делает. А на 2.0 вообще не работает. Консоль — она и в Африке консоль.

Эксперт Python

5415 / 3839 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

Лучший ответ

Сообщение было отмечено Royal_X как решение

Решение

ЦитатаСообщение от Royal_X Посмотреть сообщение

иногда cmd бывает удобен, например я использую его для удаления служб (sc delete)

К самому batch (и cmd) команда sc.exe (на самом деле внешняя утилита) никакого отношения не имеет.
———————————

ЦитатаСообщение от FlasherX Посмотреть сообщение

Если речь про -w Hidden, то оно того не делает.

Ну почему не делает — скрывает с той же «эффективностью«, что и внешние утилиты для cmd: окно cmd в любом случае мелькает, но тут же скрывается.
Вот я проверил на запуске через Python IDLE:

1 2 3 4 5 6 7 8
>>> os.system('powershell.exe -nologo -noninteractive -command "&dir"') 0 # здесь консоль полностью отображает весь вывод команды dir >>> os.system('powershell.exe -nologo -noninteractive -windowStyle hidden -command "&dir"') 0 # здесь только мелькает >>> >>>os.system('nircmd win hide title "%ComSpec%" & cmd /c dir') 0 # и здесь тоже самое - окно скрывается, но успевает мелькнуть >>>

К тому ж есть, как я помню, и другие способы.

ЦитатаСообщение от Royal_X Посмотреть сообщение

Командой nul добился скрытия обратного отсчёта таймера.

Кстати, это не команда. Это примерный аналог /dev/null в линуксе — устройство для зануления вывода.
К скрытию окон никакого отношения не имеет.

ЦитатаСообщение от Royal_X Посмотреть сообщение

Но замечаю, что на доли секунды открывается консоль и тут же закрывается.

И это, как было замечено выше, абсолютно естественное поведения. Если бы у тебя там был долгоиграющий код, то ты бы созерцал это окно ровно столько, сколько он выполнялся.

ЦитатаСообщение от Royal_X Посмотреть сообщение

как сделать так, чтобы консоль вообще не открывалась?

Запуск задания из планировщика от имени System. В этом случае окно консоли будет существовать только в невидимой для юзера нулевой сессии.

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

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

В статье описываются различные способы того, как спрятать окно 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
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 "

] "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? Специальные программы.

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

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

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

Для 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

Успехов.

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

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