Как скрыть запуск окна 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)}}
![]()
5415 / 3839 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от Royal_X 
просто исследую возможности командной строки
У нее нет никаких возможностей. Если подразумевать под КС — интерпретатор cmd.
Совсем другое дело powershell. Но он не для школьников.
2419 / 1039 / 371
Регистрация: 01.06.2021
Сообщений: 3,708
Garry Galler, зачем мне этот powershell, если я знаю, как в нем это делать. Я спрашивал именно по командной строке.
![]()
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 вообще не работает. Консоль — она и в Африке консоль.
![]()
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 файла.
Батники, они же 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\CentralProcessorREGEDIT4 ; @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
От первого окошка я предлагаю вам избавиться с помощью следующего скрипта, оформленного уже в очередной, vbs-файл . А вот и к нему скрипт (смотрите — мой путь к файлу C:\spec.bat ):
'HideBat.vbs CreateObject("Wscript.Shell").Run "C:\spec.bat", 0, True
Назову любым именем с расширением .vbs . Теперь работа батника по нажатии на vbs -ник сопровождается лишь появлением окна Контроля учётных записей : дело в том, что изменения, проделываемые батником касаются реестра, а система логично не пропускает это бесконтрольно. Как запускать программу без UAC — это тема отдельной статьи:

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

Ярлык готов (можете сменить его рисунок через Свойства ярлыка). Его можно закинуть на выбор в папку Автозагрузки, поместить в Планировщик Windows или запускать двойным щелчком мыши. Окна консоли не будет.
Как спрятать окно cmd? Специальные программы.
Их немало, они легковесны и просты в использовании. Минус — их нужно скачивать, и некоторые устанавливать. Приведу самые популярные из них:
Утилита отечественного производителя. Нужно покупать, стоимости не знаю. Однако с её помощью можно скрыть окно раз и навсегда, и не важно, требуется ли подтверждение UAC или нет — его тоже можно скрыть:

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

Утилита много чего умеет, в том числе менять уровень звука, открывать лотки привода и т.д. Для нашего случая, чтобы спрятать окно cmd , можно было бы просто ввести команду в виде:
nircmd elevatecmd exec hide путь-к-файлу
От окна UAC не избавились (elevatecmd exec и есть часть команды с запросом на UAC), но нам и не обещалось. И постоянно прописывать в консоли полный путь к файлу неудобно, потому сразу создадим ярлык:
nircmd cmdshortcut "~$folder.desktop$" "Батник" elevatecmd exec hide путь-к-файлу

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

Успехов.
