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

Удобно его использовать WSH, простые команды и сейчас он всегда предустановлен.

Запуск команды или bat файла через JScript

Например, команда ping -n 10 yandex.ru показывает консольное окно. Чтобы его скрыть, можно запустить команду из скрипта JScript, задав параметр intWindowStyle равным 0 (Hides the window – скрывает окно). Весь код умещается в две строчки:

var wsh_shell = WScript.CreateObject("WScript.Shell");
var rc = wsh_shell.Run("ping -n 10 yandex.ru",0,false);

Или для bat файла:

var wsh_shell = WScript.CreateObject("WScript.Shell");
var rc = wsh_shell.Run("my.bat",0,false);

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

wscript my.js

Эту команду можно использовать в строке ярлыка, например, если через ярлык в папке автозагрузки запускается какой-нибудь скрипт и мешает своим черным окном, то в ярлыке запуска нужно настроить запуск wscript my.js.

Надежнее будет явно прописать запуск через wscript, чтобы даже при изменении настройки предпочитаемой программы использовался именно wscript.exe, а не консольный cscript.exe.

Этот способ простой, но имеет недостаток: скрипт запускает указанную программу или командный файл и сразу закрывается. Если в программе или командном файле произойдёт ошибка, эта информация не отобразится, окно-то скрыто.

Запуск команды или bat файла через JScript с контролем результата

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

var wsh_shell = WScript.CreateObject("WScript.Shell");
var result = wsh_shell.Run("ping -n 10 yandex.ru",0,true);
if (result != 0) // код возврата не соответствует ожидаемому
    WScript.Echo("Error " + result);

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

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

Скрыть консольное окно
Метки: