Если вам уже доводилось иметь дело со скриптами CMD или BAT, то наверняка вы заметили в их работе одну особенность: в процессе исполнения скрипта на экране компьютера появляется чёрное окошко командной строки. В этом нет ничего необычного, просто иногда вид этого чёрного прямоугольника действуют раздражающе.
Вы можете скрыть вывод выполняемых в консоли команд, добавив в начало файла CMD или BAT строчку @echo off, но чтобы сделать невидимым окно самой командной строки, потребуется нечто иное.
Решение очень простое. Чтобы скрыть исполнение CMD- или BAT-файла, мы прибегнем к помощи другого скрипта, написанного на языке Visual Basic Script.
Откройте Блокнот, Notepad++ или другой текстовый редактор, скопируйте и вставьте в него следующий код:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\script.cmd" & Chr(34), 0
Set WshShell = Nothing
В данном примере путь к файлу командной строки выглядит как C:\script.cmd, у вас же он может быть другим. Сохраните файл, дав ему произвольное имя и обязательное расширение VBS. Обратите внимание — кавычки в коде должны быть прямыми, иначе при запуске скрипта получите ошибку.
Когда вам нужно будет выполнить файл командной строки, запустите VBS-скрипт, а он в свою очередь запустит ваш «батник», который выполнится в скрытом режиме. Столь раздражающего вас чёрного окна командной строки вы больше не увидите.
Наверное, кто-то из наших читателей спросит: а для чего все эти сложности? Неужели то, что делает файл CMD, не может сделать VBS? Может, просто язык Visual Basic Script знают весьма немногие, а с командной строкой более или менее хорошо знакомы все, кто считает себя продвинутым пользователем.
VBS-скрипт выдал сообщение об ошибке
http://i.imgur.com/quryaPV.png
В чём может быть причина?
В скопированном коде надо & заменить амперсантами &
А русским языком можно ответить? Ты говоришь заменить & на &? Где смысл?
как на скриншоте блокнота. надо чтобы там амперсанты были, а HTML заменяет их кодом _a_m_p_;
я тоже не понял на счёт & - у меня именно как на скрине, та же ошибка.
Сделал .bat через gpo создал политику запуска этого .bat на всех компах в домене от имени доменного администратора (что бы UAC не срабатывал), а с этим скриптом UAC отрабатывает. Чтобы черное окно не раздражало нужно делать ярлык .bat файла и в нем ставить "свернуть окно". Как-то так
Юрий, здравствуйте!
Если не трудно - подскажите, пожалуйста, как сделать запуск bat файла, чтобы UAC не срабатывал? (мой вопрос может показаться бредом - пока мало в этой теме разбираюсь). Заранее спасибо!
Дмитрий огромное спасибо сегодня сотворил первый исполняемый бат он же будет носителем тела в сф-икс архиве останется только замаскировать под картинку или что другое и нагрузить комп жертвы по полной. хотелось бы узнать у Вас как обойти антивир не грузя его до бесконечности скрыто запустить процесс. Заранее благодарен!!!
Вообще-то несколько странный совет - использовать vbs. Ведь вопрос поставлен однозначно: как скрыть исполнение файла CMD или BAT. Конкретно - CMD или BAT! А средства самой командной строки чем не устраивают?
шаг 1-й: минимизировать окно. Скрывать совсем может оказаться ну очень вредно.
if "%~1" == "" (start "" /min "%comspec%" /c "%~f0" any_word & exit /b)
шаг 2-й: скрыть ВСЮ информацию в окне.
set OUTPUT=nul
if "%STDOUT_REDIRECTED%" == "" (
set STDOUT_REDIRECTED=yes
cmd.exe /c %0 1>%OUTPUT% 2>%OUTPUT%
exit /b %ERRORLEVEL%
)
Так сказать - без привлечения "костылей"...
Крутяк, Анатолий, работает. Респект
Здравствуйте!
Вопрос старый, но всё же: по отдельности эти два шага отрабатывают на УРА, но вместе не полностью.
Если развернуть окно, то результат выполнеия виден.
Есть возможность подправить?
что это значит? куда это пихать? и почему в "шагах" минимизациия окна и сокрытие инфы в нём, если надо полностью скрыть всё окно??
И как его реализовать и каким разширениям файла сделать?
никак. он просто тебе написал для того, чтобы... написать
Стасу. "никак. он просто тебе написал для того, чтобы… написать" - увы, каждый судит по себе, соболезную.
Артёму. Как реализовать? Да просто вставить в начало cmd-файла. После @echo off например.
С каким расширением? Да вроде вопрос поставлен: "Как скрыть исполнение файла CMD или BAT"
Прошу прощения, но не думал, что вплоть до такого уровня объяснять надобно. В голову не пришло... :(
правильный код:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "путь к файлу", 0, false
пример (sfx-архив,открываем-смотрим что внутри, иконка на sfx не менялась): https://www63.zippyshare.com/v/PZ2t5d1B/file.html
ремарка - пример делался для объяснения юзверям механизма как они заражают свои пк самостоятельно, скачивая как они думают музыку. антивирус не реагирует :) у кого просмотрщик изображений сразу показывает их на весь экран (FastStone Image Viewer и иже с ним) в первые мгновения могут испытать шок, просто нажмите ESC :)
https://i108.fastpic.ru/big/2018/1225/f9/810c915d92518c6f909e3b4340b9a7f9.jpeg
Отлично работает (если в коде оба & заменить на простые двойные кавычки) НО:
в WinXP фокус проходит, т.к. там командная строка по умолчанию от админа. В Win7 работает, если командная строка не требует админа, а если требует, то всё запускается скрыто, как положено, но не работает.
Как сделать, чтобы VBS запускал CMD под админом? (в опциях cmd-файла поле "уровень прав" недоступно)
Есть другой способ спрятать окно cmd — с помощью инструмента HidCon:
создать ярлык к программе HidCon, открыть свойства ярлыка и после пути к проге дописать параметры.
При необходимости там же, в свойствах ярлыка указать "запуск от администратора".
Пример1:
С:\hidcon\hidcon.exe C:\MyProg\program.exe c:\MyProg\parameter.lst
где C:\MyProg\program.exe c:\MyProg\parameter.lst - это консольная прога с файлом-параметром (вместо которого можно писать команды)
Пример2: (с использованием переменных среды)
С:\hidcon\hidcon.exe "%programfiles%\MyProg\program.exe" "%programfiles%\MyProg\parameter.lst"
Пример3: (запуск не под админом, даже если в свойствах ярлыка Hidcon стоит админ)
С:\hidcon\hidcon.exe c:\dir\comand.cmd
способ с VBS работает, а как остановить его выполнение, если вдруг понадобиться?
Просто завершите wscript.exe в диспетчере задач, или используйте CMD-код:
taskkill /f /im wscript.exe
Здравствуйте.
Перезагружаю программу таким способом.
taskkill /F /T /IM test.exe
start test.exe
Работает, только программа запускается свернутой на панели задач. А как можно сделать чтобы запускалась нормально ?
Попробуй call вместо start или вовсе:
taskkill /F /T /IM test.exe
test.exe
содержимое cmd такое: (черное окно сразу пропадает)
@echo off
start glc_player.exe