Скрыть консольное окно в bat/cmd файлах.
Зачастую бывает желательно скрыть консольное окно bat/cmd файла. Для этих целей существуют несколько утилит.NIRCMD
Если вы хоть раз просматривали внушительный список возможностей утилиты NIRCMD, то скорее всего задались вопросом - а она это может ? Да, может. Я уже упоминал эту утилиту не раз.(Несмотря на то, что эта утилита все-таки "комбайн" или, говоря рекламным языком - все в одном, текущая ее версия занимает менее 45К ! Только за одно это хочется снять шляпу перед ее авторами. И все эти килобайты - бесплатно).
Итак, для того, что бы сделать консольное окно невидимым следует записать:
nircmd.exe execmd md с:\temp\a1
Вы можете передавать параметры в ваш bat/cmd файл или программу как привыкли.
nircmd.exe execmd md5sum.exe ddd.txt>res.txt
Для выполнения приложения ( кстати, не только bat/cmd файлов )
без отображения консольного окна вместо execmd можно
использовать другой параметр этой утилиты:
nircmd.exe exec hide "c:\temp\wul.bat" /savelangfile
Утилита hidec.
( Домашней страницы не нашел, лучше поэтому искать поиском по ключу hidec.exe )
hidec.exe /W %systemdrive%\install\prepare.cmd
Ключ /w запускает приложение с ожиданием окончания его работы.
Существуют еще платные (например, Hidden Start - Hstart) и бесплатные (например, chp.exe -Create Hidden Process, cmdow) утилиты, позволяющие скрыть консольное окно. Здесь я не пытался сделать обзор и сравнительный анализ всех различных вариантов решения этой проблемы. Тем более, что для решения конкретной задачи - скрыть консольное окно для bat/cmd файлов - различия утилит, как мне кажется, не выходят за рамки личных предпочтений.
Кроме того существует возможность сделать это фактически не используя сторонних утилит.
Файл, с кодом, приведенным ниже и с расширением vbs если его выполнить непосредственно или командой CSCRIPT запустит в данном случае блокнот в скрытом окне. Открыв окно Диспетчера задач можно увидеть, что такой процесс действительно запущен.
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("notepad", 0, true)
Параметры объекта RUN можно посмотреть здесь
Хотел бы еще обратить ваше внимание на то, что по понятным причинам, все антивирусы с огромным подозрением относятся к приложениям со скрытым консольным окном. И к программам, позволяющим их создавать. Возможно, их лучше добавить в списки исключений для антивирусов. Так как ничего нельзя гарантировать, как они отнесутся к этим утилитам при очередном обновлении антивирусной базы.
-------------------------------------------------------------------------------------------------------
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь