/ / Чи можу я запустити пакетний файл Windows без видимого командного рядка?

Чи можна запустити пакетний файл Windows без видимого командного рядка?

Пакетні файли - це зручний спосіб виконати серію команд у Windows, але чи є спосіб їх невидимо запускати у фоновому режимі? Читайте далі, щоб дізнатися, як.

Сьогоднішня сесія "Питання та відповіді" приходить до нас з люб'язності SuperUser - підрозділу Stack Exchange, групування веб-сайтів Q&A, керованого громадою.

Питання

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

Я встановив рубіновий камінь під назвою Redcar, якийзапускається з командного рядка. Коли він запускається, він викрадає оболонку, доки не закінчиться, тому мені потрібно створити нове вікно оболонки, щоб продовжувати роботу в командному рядку. Оболонка, яку я використовую, - це оболонка GITBash від MySysGit.

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

Як мені просто запустити BAT, не бачачи запиту?

Чи є рішення для крадькома швидкого бажання Джейка?

Відповіді

Співавтор SuperUser Afrazier відповідає комбінацією поганих та хороших новин:

Ви не можете - виконання командного файлу за допомогою вбудованого командного рядка буде тримати вікно відкритим до виходу командного файлу.

Що ти може потрібно вжити заходів, щоб переконатися, що пакетний файл виходить якомога швидше. Якщо це можливо, змініть пакетний файл, щоб запускати будь-яку програму з start команди. За замовчуванням, start негайно повертається, не чекаючипрограму для виходу, тому пакетний файл буде продовжувати працювати і, мабуть, негайно вийти. Поєднуйте це із зміненим ярликом для запуску пакетного файлу зведеним до мінімуму, і ви побачите лише спалах панелі завдань, навіть не бачачи вікна на екрані.

Одним застереженням є те, що якщо ви запускаєте програму в консольному режимі, якою є багато інтерпретаторів сценаріїв, командний файл буде чекати виходу програми та використовувати start породить нове вікно консолі. У цьому випадку потрібно запустити версію інтерпретатора на базі Windows, а не консольну - ні start необхідний. Для Perl ви б побігли wperl.exe замість perl.exe. Для Python це pythonw.exe замість python.exe. Старий дистрибутив win32 Ruby, який я завантажив, має rubyw.exe, який повинен робити те саме.

Остаточна можливість - це використання сторонніх інструментів длязапустіть командний рядок із прихованим вікном. Я чув про такі речі, але ніколи не використовував їх, тому я не знаю нічого особливо, на що вказував би вам.

Читачі також вказали йому ще одного суперкористувачаПотік, який підкреслює, як за допомогою сценарію Visual Basic можна вийти за рамки мінімізації видимості та прямого приховування запиту CMD. У цій темі Гаррі MC пояснює:

Рішення 1:

Збережіть цей один рядок тексту як файл invisible.vbs:

CreateObject (“Wscript.Shell”). Запустіть “” ”” & WScript.Arguments (0) & “” ””, 0, False

Щоб невидимо запустити будь-яку програму або командний файл, використовуйте її так:

wscript.exe “C: Whereverinvisible.vbs” “C: Деякі інші PlaceMyBatchFile.bat”

Щоб також мати можливість передати / передати список аргументів, використовуйте лише дві подвійні лапки

CreateObject (“Wscript.Shell”). Запустіть “” & WScript.Arguments (0) & “”, 0, False

наприклад: Invisible.vbs “Kill.vbs ME.exe”

Рішення 2:

Використовуйте інструмент командного рядка для безшумного запуску процесу: Тихо.

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


Щось додати до пояснення? Звучить у коментарях. Хочете прочитати більше відповідей від інших користувачів, які користуються технологією Stack Exchange? Ознайомтесь із повною темою дискусії тут.