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

Обновлено: 04.07.2024

Определить, запущен ли файл bat, двойным щелчком или из окна cmd (7)

У меня есть bat-файл, который делает кучу вещей и закрывает окно cmd, что нормально, когда пользователь дважды щелкает bat-файл из проводника. Но если я запускаю bat-файл из уже открытого окна cmd, как в cmd>c:\myfile.bat, то я не хочу, чтобы bat-файл закрывал окно cmd (END), так как мне нужно делать другие вещи. Мне нужен код команды bat dos, который будет делать что-то вроде

Возможно ли это? спасибо

%cmdcmdline% указывает точную командную строку, используемую для запуска текущего Cmd.exe.

  • При запуске из командной консоли эта переменная имеет вид "%SystemRoot%\system32\cmd.exe" .
  • При запуске из проводника эта переменная имеет вид cmd /c """ " ;
    это означает, что вы также можете проверить переменную %0 в файле bat, поскольку в этом случае это всегда полный путь к файлу bat, который всегда заключен в двойные кавычки.< /li>

Лично я бы выбрал подход %cmdcmdline% (не %O ), но имейте в виду, что обе команды запуска могут быть переопределены в реестре…

@dlchambers был близок, но установка не работала, так как cmdcmdline в некоторых случаях не является определенной переменной среды, но эта версия, основанная на его работе, отлично подходит для меня:

Это не только возможно, но и желаемое поведение является нормальным поведением при выполнении пакетного файла, если только вы не сделаете что-то "особое":

  • при выполнении пакетного файла двойным щелчком по нему в проводнике окно cmd закроется, когда оно будет выполнено;
  • когда пакетный файл выполняется из командной строки, он просто возвращается в приглашение командной строки после завершения — окно не закрывается;

Поэтому я думаю, что вопрос, на который необходимо ответить, заключается в том, что вы делаете в пакетном файле, что приводит к закрытию командного окна, когда вы выполняете его из командной строки?

Как и @anishsane, я тоже хотел, чтобы оператор паузы запускался из проводника, но не при запуске из командного окна.

Вот что сработало для меня, основываясь на ответе @mousio выше:

Надеюсь, это поможет.

Используйте выход /b 0 , а не выход

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

прочитав предложения, я сделал следующее:

который условно устанавливает переменную: CMD_INITIATED_FROM_EXPLORER

..и впоследствии может использоваться по мере необходимости:

.. но проблема с Powershell, о которой упоминает @Ruben Bartelink, не решена:

запуск ./batch.cmd из Powershell использует команду cmd /c под капотом

Если мы запускаем пакетный файл вручную, мы обычно не возражаем против появления "черного квадрата" в окне консоли.
Если, с другой стороны, мы запускаем пакетный файл по расписанию или удаленно, мы часто предпочитаем вообще не видеть «черный квадрат».

Существует несколько инструментов и методов, позволяющих скрыть окно консоли.

Запустить пакетный файл свернуть

Самое простое решение — запустить пакетный файл в свернутом виде.
Пакетный файл будет по-прежнему отображаться на панели задач во время работы.
Для командного файла, запускаемого с помощью ярлыка, это может быть "достаточно скрыто".

См. этот совет JSIFaq о том, как сделать так, чтобы пакетный файл запускал другой скрытый пакетный файл (использует временный файл VBScript).
Обратите внимание, что, поскольку скрипт создается и вызывается пакетным файлом, все равно будет видно окно консоли.

Или загрузите и используйте мой RunNHide.vbs или RunNHide.exe.

Сделать пакетный файл свернуть собственной консолью

Используйте одну из следующих команд в пакетном файле, чтобы свернуть окно консоли этого пакетного файла:

Заставить пакетный файл скрыть собственную консоль

Используйте одну из следующих команд внутри пакетного файла, чтобы скрыть окно консоли этого пакетного файла:

Спойлер: полностью скрыть консоль невозможно в стандартных интерпретаторах команд CMD.EXE или COMMAND.COM.
Все методы скрытия консоли, которая должна вызываться из пакетного файла, всегда будут показывать по крайней мере короткую «черную вспышку» открытой консоли, прежде чем она будет скрыта.
Поэтому "маскирование" консоли должно быть запущено до запуска командного файла, что означает использование альтернативного языка сценариев для запуска скрытого интерпретатора команд .

Чтобы восстановить видимость консоли, используйте:

Запустить пакетный файл свернуть

Если окно консоли уже открыто, но вы хотите запустить еще один свернутый пакетный файл, используйте одну из следующих команд:

Запустить пакетный файл скрытый

Если окно консоли уже открыто, но вы хотите запустить другой скрытый пакетный файл, используйте одну из следующих команд:

Запустить пакетный файл полностью скрытым

Чтобы полностью скрыть консоль, необходимо использовать исполняемый файл Windows (GUI) или альтернативный язык сценариев с интерпретатором на основе GUI (например, VBScript с WSCRIPT.EXE).
Не не используйте следующие команды в пакетном файле, так как этот пакетный файл будет запускаться в (видимом) окне консоли.

Убедитесь, что пакетный файл закрывает собственное окно при любых обстоятельствах, потому что вы не сможете увидеть, закрывается ли он или продолжает работать "навсегда".

Я ищу способ запустить пакетный файл (.bat), чтобы ничего не было видно пользователю (без окна, без имени панели задач и т. д.).

Я не хочу использовать какую-то программу для этого, я ищу что-то более чистое. Я нашел решение, использующее VBScript, но мне тоже не очень нравится использовать VBS.

Ха-ха! Точно нет. Я разрабатываю службу Windows, которая будет время от времени запускать пакетный файл.

Службы Windows не работают как пакетные файлы. Они работают как сервисы. Вам нужно уточнить вопрос -- как написано и с комментариями мне не понятно.

19 ответов 19

Решение 1.

Сохраните эту строку текста как файл invisible.vbs:

Чтобы запустить любую программу или пакетный файл незаметно, используйте его следующим образом:

Чтобы иметь возможность передавать/передавать список аргументов, используйте только две двойные кавычки

Пример: Invisible.vbs "Kill.vbs ME.exe"

Решение 2.

Используйте инструмент командной строки для автоматического запуска процесса: Quiet, hidecon или hideexec.

Как изменить его, чтобы он передавал все аргументы? Было бы удобнее передавать аргументы, не заключая их в кавычки.

Разве это не требует от вас создания пакетного файла для размещения wscript.exe "C:\Wherever\invisible.vbs" . внутри?

Как использовать это решение: 1: создайте пакетный файл, который вы хотите запустить (например, в C:\apps\mybatch.bat). 2: создайте скрипт invisible.vbs (т.е. в C:\apps\invisible.vbs). 3: создайте новый ярлык, щелкнув правой кнопкой мыши фон (пустое место) папки, в которой вы хотите сохранить ярлык, наведите курсор мыши на пункт «Создать» в контекстном меню, нажмите «Ярлык». В поле «Расположение элемента» введите wscript.exe «C:\apps\invisible.vbs» «C:\apps\mybatch.bat» . Двойной щелчок по этому ярлыку автоматически запустит пакетный файл.

Чтобы скрыть пакетные файлы или командные файлы или любые файлы. Используйте встроенную в Windows XP утилиту IExpress.exe для создания .EXE из пакетного файла. При использовании IExpress убедитесь, что вы установили флажок «Запустить скрыто» и отметьте все флажки, чтобы ничего не отображать. После того, как вы создадите свой .exe файл, поместите его в любую папку с командой запуска, которую вы выберете, и он никогда не появится.

Мне не нравится решение VBScript.

Загрузите и скопируйте nircmd.exe в папку %systemroot%\system32, затем добавьте эту команду в первую строку пакета:

или сначала настройте заголовок пакета с помощью команды title, чтобы не скрывать все окна cmd, например:

Я использую именно этот метод, но какое-то время мне не удавалось, чтобы nircmd не скрывал окно cmd, просто сворачивал его в панель задач и не мог восстановить, щелкнув по нему. Не знаю почему.

nircmd.exe excmd также может представлять интерес, он решил мой вариант использования. Он запускает уже скрытую команду.

Запустите скрипт через at job, не делая его интерактивным:

Еще одно решение: если вы не возражаете против установки чего-то вроде Python, вы можете просто создать сценарий и запустить его с помощью pythonw (связанная версия для операций с графическим интерфейсом). Поскольку вы не используете какие-либо графические API, окно отображаться не будет. Просто используйте вызовы os.system(), и он будет имитировать пакетный сценарий, поскольку это то же самое, что и ввод строк в командную строку.

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

Единственная проблема заключается в том, что вы не можете связать тип файла с ярлыком. Поэтому, если вы хотите открыть пакетный скрипт, дважды щелкнув его в проводнике, вам все равно понадобится .bat-файл.

@BjörnLindqvist В этом случае я бы создал начальный скрипт pyw, а затем назначил ему тип файла. Содержимое скрипта будет, например. подпроцесс импорта, sys; subprocess.Popen(['path/to/prog.exe', sys.argv[1]], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True, createflags=subprocess.DETACHED_PROCESS) и назначение сценария будет "путь\к\pythonw.exe" "путь\к\starter_script.py" "%1" . Я нашел RapidEE удобным инструментом для назначения типов файлов. См. также ответ Джона Т. о способах запуска программ Python v2.

Кстати, у одной из моих личных функций скриптового инструмента есть сигнатура doubleclick(*args) , которая делает вышеописанное.Когда args просто [filepath], он открывает путь к файлу со своей программой по умолчанию.

Ошибся в первом комментарии, имел ввиду FileTypesMan, а не RapidEE (что тоже очень удобно, редактирует переменные окружения).

use Cmdow — это утилита командной строки Win32 для NT4/2000/XP/2003, которая позволяет отображать окна, перемещать их, изменять размер, переименовывать, скрывать/показывать, отключать/включать, сворачивать, разворачивать, восстанавливать, активировать/деактивировать, закрывать , убитые и многое другое.

Запустить пакетный файл скрыто, передав ему параметры:-

cmdow /run/hid mybat arg1 "arg 2"

cmdow определяется большинством антивирусных продуктов как вредоносное ПО. Следовательно, будет сложно использовать это решение в других местах, кроме вашего ПК.

Это открытый исходный код? Нет смысла использовать стороннее приложение, которое не имеет открытого исходного кода и может содержать трояны, когда вы можете сделать то же самое, запустив однострочный vbscript от harrymc (см. его ответ в начале темы).

@thebunnyrules Есть ли где-нибудь его скомпилированная версия? Источник бесполезен для меня без компилятора С++. И я действительно не хочу загружать и устанавливать компилятор C++ для одного приложения, лол.

Вы можете легко запустить его в свернутом виде.

Но чтобы использовать start , вы открываете еще одно окно консоли cmd (пока ненадолго). В любом случае, @gavenkoa, чтобы использовать запуск из любого места, просто запустите его через cmd : cmd /c start /MIN batch.cmd .

Вы также можете создать скрипт AutoHotkey:

В Windows7 вы можете использовать панель управления «Назначенная задача», чтобы запланировать выполнение пакетного файла в фоновом режиме незаметно с указанными разрешениями и даже в качестве учетной записи «SYSTEM». Смотрите скриншот ниже:

введите здесь описание изображения

Кроме того, несмотря на не так много возможностей, вы также можете создать невидимую задачу пакетного сценария, подобную этой, из командной строки, используя команду «AT.exe» без параметра «/interactive».

Запускать задачу как «СИСТЕМУ», когда ей не нужны «СИСТЕМНЫЕ» привилегии (и она не была тщательно проверена на наличие уязвимостей и усилена), как плохая идея; см. комментарии здесь.

Отличный конвертер Bat To Exe конвертирует ваш файл .bat или .cmd в файл .exe.


У него простой пользовательский интерфейс. Вы можете отказаться от окна консоли, выбрав Exe Format XX Bit | Опция Windows (невидимая). Кроме того, он позволяет назначить значок, установить пароль и ряд других параметров.

ЕЩЁ ДРУГОЙ способ из C/C++ — использовать функцию CreateProcess с флагом CREATE_NO_WINDOW. У него много дополнительной мощности, не показанной здесь. Это минимум, необходимый для замены system() или семейства _spawn().

Я успешно сделал это с помощью nircmd следующим образом:

  1. скачать nircmd.exe по ссылке
  2. создайте файл .bat
  3. первая строка файла .bat должна быть такой: nircmd.exe win hide ittitle "cmd.exe"
  4. выберите оба файла и создайте самораспаковывающийся файл с помощью WinRAR
  5. на вкладке "Общие" установите флажок "Создать файл автоизвлечения"
  6. на вкладке "Дополнительно" выберите кнопку "Автоизвлечение"
  7. откроется новое окно, выберите вкладку "режим", затем выберите параметр: "скрыть все"
  8. выберите вкладку "обновить" и выберите вариант "перезаписать существующие файлы"
  9. Выберите вкладку «Общие» и укажите папку назначения для извлечения, если хотите, и в поле «Выполнить после извлечения» напишите полный путь, куда будет извлечен ваш .bat. Пример: если вы определяете папку извлечения как: "c:\windows\", то полный путь для выполнения после извлечения будет: "c:\windows\file.bat" (в случае, если ваш .bat называется: file.bat )
  10. нажмите «Принять» во всех окнах.

Теперь у вас будет файл .exe, который после того, как вы дважды щелкните по нему и установите его, ваш .bat будет работать полностью скрытым.

Добавляю сюда свой ответ из другого поста, поскольку он был дубликатом, и я не вижу здесь этого решения, поэтому теперь есть 17 разных ответов о том, как запустить скрытый пакетный файл. Я удалю свой ответ на этот пост в ближайшем будущем.

Создайте свой пакетный скрипт с вашей пакетной логикой и командами в нем, а затем создайте новый файл с расширением .VBS, используйте приведенную ниже логику (пример, который я привел ниже) и просто вставьте полный путь к вашему .CMD или . BAT-файл с командами PING -t и т. д., поэтому он выполняет пакет скрытым образом, не отображая командное окно при его выполнении.

Где логика в приведенном ниже примере указывает C:\Folder\BatchFileName.cmd, измените это, чтобы указать на пакетный сценарий с вашими командами, которые вы запускаете вручную, и т. д. сейчас.

Сохраните файл .VBS и запланируйте его с помощью планировщика заданий. Проблемы с планированием задачи в Windows7 для запуска по неопределенному расписанию для ваших нужд.

В противном случае просто дважды щелкните файл .VBS для запуска бесконечной команды PING, которую вы помещаете в пакетный файл, на который вы указываете по мере необходимости.

ПРИМЕЧАНИЕ. Я полагаю, что именно отсюда я получил эту логику скрипта, но она надежно работает для той же цели, которая вам нужна здесь, а именно для обеспечения скрытия командного окна при запуске пакетного файла Server Fault Source

ПРИМЕР ЗАПУСКА СЦЕНАРИЯ VBS КОМАНДНОЙ СТРОКИ ПАКЕТНОЕ СКРЫТИЕ ОКНА CMD

ПРИМЕР 2

Примечание. Это ищет файл bat с таким же именем. При необходимости в этом примере вы можете изменить bat на cmd в скрипте.


Джейсон Фитцпатрик


Джейсон Фитцпатрик
старший редактор умного дома

Джейсон Фитцпатрик – старший редактор отдела умного дома How-To Geek. Он имеет более чем десятилетний опыт публикации и является автором тысяч статей для How-To Geek, Review Geek, LifeSavvy и Lifehacker. Джейсон работал редактором Weekend Lifehacker до того, как присоединился к How-To Geek. Подробнее.


Пакетные файлы – это удобный способ выполнения ряда команд в Windows, но можно ли как-то незаметно выполнять их в фоновом режиме? Узнайте, как это сделать.

Сегодняшняя сессия вопросов и ответов проводится благодаря SuperUser — подразделению Stack Exchange – группы веб-сайтов вопросов и ответов, управляемой сообществом.

Вопрос

Читатель SuperUser Джейк хочет запустить BAT-файл незаметно, пишет он:

Я установил рубиновый гем под названием Redcar, который запускается из командной строки. Когда он запускается, он крадет оболочку до тех пор, пока не завершится, поэтому мне нужно создать новое окно оболочки, чтобы продолжить работу с командной строкой. Я использую оболочку GITBash из MySysGit.

Я нашел файл Redcar.bat, который, как я полагаю, предназначен для запуска Redcar в качестве ярлыка, но мне не нужна дополнительная командная строка. окно, которое открывается всякий раз, когда я запускаю файл BAT.

Как мне просто запустить BAT, не видя подсказки?

Есть ли решение тайного желания Джейка?

Ответы

Афразьер, участник программы SuperUser, делится плохими и хорошими новостями:

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

Что вы можете нужно предпринять шаги, чтобы убедиться, что пакетный файл закрывается как можно быстрее. Если возможно, измените командный файл, чтобы он запускал любую программу с помощью команды start. По умолчанию start возвращается немедленно, не дожидаясь выхода программы, поэтому пакетный файл будет продолжать работать и, предположительно, немедленно завершится. Соедините это с изменением ярлыка для запуска пакетного файла в свернутом виде, и вы увидите только мигание панели задач, даже не видя окна на экране.

Одно предостережение: если вы используете консоль- mode, которым являются многие интерпретаторы скриптов, пакетный файл будет ждать выхода программы, а при использовании запуска будет создано новое окно консоли. Что вам нужно сделать в этом случае, так это запустить версию интерпретатора для Windows вместо консольной — запуск не требуется. Для Perl вы должны запустить wperl.exe вместо perl.exe. Для Python это pythonw.exe вместо python.exe. В старом дистрибутиве Win32 Ruby, который я скачал, есть rubyw.exe , который должен делать то же самое.

Последняя возможность — использовать сторонний инструмент для запуска командной строки со скрытым окном. Я слышал о таких вещах, но никогда ими не пользовался, поэтому не знаю ничего особенного, на что можно было бы указать.

Читатели также указали ему на другую ветку SuperUser, в которой рассказывается, как вы можете использовать скрипт Visual Basic, чтобы выйти за рамки минимизации видимости и полностью скрыть приглашение CMD. В этой ветке Гарри MC объясняет:

Использование любого из вышеперечисленных решений, в зависимости от вашего уровня комфорта с использованием VBS и сторонних инструментов или без него, как минимум уменьшит видимость окна CMD или полностью удалит его.

Есть что добавить к объяснению? Отключите звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь.

  • › Matter — это долгожданный стандарт умного дома
  • › Сколько оперативной памяти требуется вашему ПК?
  • › 7 основных функций Microsoft Excel для составления бюджета
  • › Что означает ИК и как вы его используете?
  • › 5 вещей, которые вы, вероятно, не знали о GIF-файлах
  • › QWERTY-клавиатура — самая большая неразгаданная тайна технологий

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

Одним из неудобств при запуске пакетных файлов является то, что они всегда открывают окно консоли, в котором отображаются результаты выполняемых команд. Это может быть важно, если вы хотите взаимодействовать или видеть, что происходит во время работы пакетного файла, но немного раздражает, если вы хотите тихо запустить пакетный сценарий в фоновом режиме или при запуске Windows.

вывод консоли пакетного файла

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

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

Запуск тихого пакетного сценария с помощью сторонней утилиты

Простым и распространенным решением для автоматического запуска пакетного файла является его запуск с помощью сторонней утилиты, закрывающей окно консоли.

Скрытый старт (HStart)

Hidden Start – это портативный и довольно мощный инструмент, который может запускать исполняемые файлы и сценарии с несколькими полезными параметрами. Мы используем версию 4.2 от 2013 года, потому что она переносима и не имеет таких ограничений, как более новые версии. Начиная с версии 4.3, Hidden Start больше не является переносимым, а также выводит сообщение каждый раз, когда вы пытаетесь запустить скрытую консоль, что делает его бесполезным для этой цели.

скрытый старт

Разархивируйте и запустите программу с HStartUI.exe, процесс состоит из трех шагов. Вручную добавьте или перетащите пакетный файл в окно, убедитесь, что установлен флажок «Скрыть окно консоли», и при необходимости установите флажок «Выполнять с наивысшими привилегиями», если этого требует ваш сценарий. Другие параметры настройки, такие как приоритет или начальный каталог, не важны, если только вы не знаете, что они требуются сценарию.

Шаг 3 показывает команду вывода, которую нужно запустить вручную. Вы можете использовать кнопки внизу, чтобы скопировать команду, автоматически создать ярлык или добавить запись автозапуска в реестр. Обратите внимание, что опция обхода запроса UAC недоступна в бесплатной версии (позже мы покажем вам, как это сделать бесплатно).

SilentCMD

SilentCMD [путь к файлу .bat] [аргументы пакета] [параметры]

silentcmd

В SilentCMD есть две дополнительные опции. Один из них — включить ведение журнала с помощью «/log: [путь к .txt]», а другой — запустить скрипт после задержки с использованием «/DELAY: [xx секунд]». Добавьте параметр в конец команды. Пока вам не нужны дополнительные функции, такие как повышение прав или другой начальный каталог, SilentCMD работает прекрасно и может быть всем, что вам нужно.

NirCMD

Nirsoft NirCMD – это небольшой многофункциональный инструмент, который может незаметно выполнять десятки задач, не открывая никаких окон консоли. К ним относятся извлечение дисков ПЗУ, изменение громкости звука, включение экранных заставок, управление процессами/службами и многое другое. Следующую команду можно использовать при загрузке или в ярлыке для автоматического запуска пакетного файла:

nircmd exec hide [путь к файлу .bat]

Команды exec и hide используются для выполнения скрипта и скрытия любых окон консоли от открытия.

создать тихий пакет с помощью nircmd

Включите elevatecmd, чтобы запросить права администратора для пакетного файла, хотя это необходимо только в том случае, если вы знаете, что команды в вашем скрипте требуют повышения прав.

nircmd elevatecmd exec hide [путь к файлу .bat]

Ярлык на рабочем столе можно создать вручную или указать NirCMD создать ярлык из командной строки с включенными командами, чтобы автоматический скрипт был готов к запуску.

nircmd cmdshortcut «~$folder.desktop$» «SilentBatch» exec скрыть C:\Users\Raymondcc\MyBatchFile.bat

Приведенное выше действие создаст ярлык SilentBatch на рабочем столе, который автоматически выполнит сценарий MyBatchFile.bat. Обратите внимание, что вам, возможно, придется изменить местоположение «Начать в» в ярлыке, так как вывод сценария, который не предоставляет путь, по умолчанию будет C:\Windows.

изменить начальную позицию для nircmd ярлык

При двойном щелчке по исполняемому файлу NirCMD будет предложено скопировать себя в каталог Windows, поэтому вам нужно будет использовать только nircmd.exe и не указывать каждый раз полный путь. Рекомендуется сделать это, если вы планируете использовать NirCMD на своем компьютере (не забудьте щелкнуть правой кнопкой мыши и запустить nircmd.exe от имени администратора).

копировать исполняемый файл nircmd в Windows

Для получения полной информации о множестве доступных команд ознакомьтесь с полным файлом справки NirCMD.

Raymond.cc Бесшумный пакетный запуск

У нас также есть небольшой инструмент, который может автоматически запускать пакетный файл. Он создан в Autoit и, по сути, представляет собой слегка расширенную версию метода «Создание собственного исполняемого файла» на второй странице. Программа Silent Batch Launcher проста в использовании и предоставляет несколько иные возможности по сравнению с другими инструментами здесь.

Запустите исполняемый файл, и вам будет предложено найти пакетный файл. INI-файл, содержащий путь к скрипту, будет создан рядом с исполняемым файлом. Каждый раз, когда вы запускаете Silent Batch Launcher с этого момента, он будет запускать один и тот же пакетный файл, пока присутствует файл INI.

raymondcc тихий пакетный запуск

Чтобы запустить другой скрипт, удалите INI-файл или удерживайте клавишу Shift при запуске инструмента, после чего появится всплывающее окно запроса файлов. Имя файла INI будет совпадать с именем файла EXE, поэтому в одной и той же папке можно иметь экземпляры инструмента с разными именами. В архиве два файла, используйте версию «Админ», если скрипт требует повышения прав. Приветствуются любые полезные отзывы об этом инструменте.

Примечание. Поскольку этот инструмент был создан с помощью Autoit, он создает некоторые ложные срабатывания с онлайн-сканерами вирусов, такими как VirusTotal.

Есть несколько других инструментов, которые могут скрыть окно консоли пакетного сценария, которые мы здесь не упомянули. К ним относятся Cmdow, Create Hidden Process, Hidecon и Hideexec.

Скрыть консоль пакетной службы с помощью сценария Visual Basic

Скрытие окна консоли пакетного сценария с помощью Visual Basic очень похоже на использование внешней команды и работает в основном таким же образом. Запустите сценарий VB и укажите пакетный файл в качестве аргумента, затем код запускает сценарий, не отображая никаких выходных данных. Это можно сделать с помощью одной строки кода.

Создайте пустой текстовый файл, скопируйте и вставьте приведенную выше строку, затем сохраните ее как файл .vbs. Либо загрузите готовый скрипт launchquiet.vbs. Чтобы добавить его в ярлык или место запуска и т. д., используйте команды следующим образом. Не забудьте использовать кавычки, если ваши пути или имена файлов содержат пробелы.

Wscript [путь к файлу .vbs] [путь к файлу .bat]

создать ярлык для скрипта launchquiet

Если вы хотите предоставить аргумент для пакетного файла, часть скрипта VB необходимо немного изменить, заменив два набора из четырех двойных кавычек на два набора из двух.

Затем укажите аргументы вместе с путем пакетного скрипта в кавычках:

Wscript [путь к файлу .vbs] «[путь к файлу .bat] [аргумент]»

Опять же, для удобства вы можете скачать готовый файл сценария launchquiet_args.vbs.

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

Читайте также: