Как скрипт cmd чтобы не было окна

Скрыть окно командной строки при использовании Exec()

Я пытаюсь выполнить этот простой тестовый скрипт, но после выполнения скрипта появляется окно командной оболочки.:

Как я могу предотвратить его появление?

обновление

я смог улучшить его с помощью этого изменения кода:

теперь окно отображается только на долю секунды. Но я вовсе не хочу, чтобы это обнаружилось.

5 ответов

вы всегда будете получать вспышку окна с Exec() . Вы можете использовать выполнить команду в скрытом окне. Но вы не можете напрямую захватить выходные данные команды с помощью Run() . Вам нужно будет перенаправить вывод во временный файл, который ваш VBScript затем может открыть, прочитать и удалить.

на FileSystemObject класс имеет методы, такие как GetSpecialFolder() чтобы получить путь к папке Windows temp и GetTempName() чтобы создать временное имя файла, которое вы можете использовать вместо жесткого кодирования выходного имени файла, как я сделал выше.

также обратите внимание, что вы можете использовать с tasklist.exe чтобы создать CSV-файл, который должен сделать его разбор намного проще.

наконец, are VBScript «native» способы получения списка запущенных процессов. В WMI это Win32_Process класс, например, может сделать это без необходимости Run/Exec .

редактировать:

для полноты, я должен упомянуть, что ваш сценарий can перезапустить себя в скрытом окне консоли, где вы можете запустить Exec() молча. К сожалению, это скрытое окно консоли также скроет ваш вывод из таких функций, как WScript.Echo() . Помимо этого, однако, вы, вероятно, не заметите никаких различий в работе вашего скрипта под cscript vs wscript . Вот пример этого метод:

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

Изменить 2:

еще одна возможность — использовать буфер обмена Windows. Вы можете передать вывод своей команды в clip.exe утилиты. Затем извлеките текст с помощью любого количества доступных COM-объектов, которые могут получить доступ к содержимому буфера обмена. Для пример:

можно использовать .Exec() метод, без вспышки окна консоли, временных файлов и неожиданных WScript.Echo выход приглушения. Метод немного сложный и требует запуска вторичного связанного скрипта, поэтому я добавил комментарии:

обновление

Я немного переделал код, чтобы сделать его более ясным:

кстати, вот это реализация VBScript «многопоточность» который использует тот же контейнер подход.

некоторые большие предложения перечислены выше. Я хотел бы сделать еще одно предложение, которое является скорее обходным путем. Вы можете использовать Рабочие Столы Sysinternals (бесплатная программа) для запуска макроса на другом рабочем столе на том же компьютере. Таким образом, мигание может происходить на собственном рабочем столе и не прерывать вашу работу.

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

запустить скрипт как систему без взаимодействия с столе

dp0PsExec.exe» -s wscript.exe «%

запустить скрипт как систему с взаимодействием с desktop

Источник

Как скрипт cmd чтобы не было окна

Сообщения: 4534
Благодарности: 344

Конфигурация компьютера
Материнская плата: ASRock P4i65PE (5 PCI, 1 AGP, 4 DDR DIMM, Audio, LAN)
HDD: ST3200827A (200 ГБ) IDE
Звук: Creative SB Live! 5.1 Digital (SB0220) Sound Card
CD/DVD: NEC DVD_RW ND-3551A
Ноутбук/нетбук: Стационарный компьютер
Читайте также:  После установки окон чем оттереть

Подскажите, пожалуйста: есть cmd-файл, состоящий из одной строки: avz.exe lang=en. Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ.

А если я запускаю avz.exe lang=en в командной строке Total Commander или через контекстное меню «Запуск с параметрами» от DistrTools — окно DOS на экране не показывается.

Почему такая разница?

Сообщения: 51518
Благодарности: 14773

Конфигурация компьютера
Материнская плата: ASUS P8Z77-V LE PLUS
HDD: Samsung SSD 850 PRO 256 Гб, WD Green WD20EZRX 2 Тб
Звук: Realtek ALC889 HD Audio
CD/DVD: ASUS DRW-24B5ST
ОС: Windows 8.1 Pro x64
Прочее: корпус: Fractal Design Define R4
Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ.

Это не окно DOS, а командная строка (cmd.exe выполняет файлы с расширением .cmd).

в командной строке Total Commander

Это сообщение посчитали полезным следующие участники:

Подскажите, пожалуйста: есть cmd-файл, состоящий из одной строки: avz.exe lang=en. Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ. »

——-
Как сказало Дерево Дровосеку: «я — пень».

Это сообщение посчитали полезным следующие участники:

Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ »

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

START [«заголовок»] [/Dпуть] [/i] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/b]
[команда/программа] [параметры]

«заголовок» Заголовок окна.
путь Рабочий каталог.
B Запуск приложения без создания нового окна с отключением
обработки сочетания клавиш ^C. Если приложение не
обрабатывает сочетание клавиш ^C самостоятельно,
единственным способом его прерывания является
использование сочетания клавиш ^Break.
I Новой средой станет исходная среда, переданная
cmd.exe, а не текущая среда.
MIN Запуск команды/программы в свернутом окне.
MAX Запуск команды/программы в развернутом окне.
SEPARATE Запуск 16-разрядной программы Windows в отдельной
области памяти.
SHARED Запуск 16-разрядной программы Windows в общей
области памяти.
LOW Запуск приложения с приоритетом IDLE.
NORMAL Запуск приложения с приоритетом NORMAL.
HIGH Запуск приложения с приоритетом HIGH.
REALTIME Запуск приложения с приоритетом REALTIME.
WAIT Запуск приложения с ожиданием его завершения.
ABOVENORMAL Запуск приложения с классом приоритета ABOVENORMAL
BELOWNORMAL Запуск приложения с классом приоритета BELOWNORMAL
команда/программа
Если это внутренняя команда cmd.exe или пакетный файл,
обработчик команд (cmd.exe) запускается с ключом /K.
Это означает, что окно не будет закрыто после завершения
команды.

Если это не внутренняя команда cmd.exe и не пакетный файл,
значит, это программа, которая будет запущена в графическом
или текстовом окне.

параметры Параметры, передаваемые команде/программе.

Изменения вызова внешних команд из командной строки или с помощью команды
START при включении расширенной обработки команд:

Для вызова неисполняемых файлов через механизм сопоставления типов файлов
достаточно просто ввести имя файла в командной строке. Например, команда
WORD.DOC запускает приложение, сопоставленное расширению имени файла .DOC.
Сведения о создании подобных сопоставлений из пакетных файлов приведены
в описаниях команд ASSOC и FTYPE.

При запуске 32-разрядного приложения с графическим интерфейсом пользователя
обработчик команд CMD.EXE не ожидает завершения работы приложения перед
возвратом к приглашению командной строки. Подобное новое поведение НЕ
относится к запуску приложений из пакетных файлов.

При выполнении командной строки, первым элементом которой является текстовая
строка «CMD» без расширения имени файла или указания пути, она заменяется
значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из
текущей активной папки, если таковая программа там имеется.

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

Обратите внимание, что этот синтаксис подобен синтаксису для переменной
PATH, то есть отдельные элементы разделяются точкой с запятой.

Если при поиске исполняемого файла нет соответствия ни одному из расширений,
выполняется проверка соответствия указанного имени папки. Если имя папки
соответствует указанному, то команда START запускает EXPLORER для этого
пути. Если такое действие выполняется из командной строки, то оно
эквивалентно выполнению команды CD /D для указанного пути.

Источник

Как скрипт cmd чтобы не было окна

Сообщения: 4534
Благодарности: 344

Сообщения: 51518
Благодарности: 14773

Конфигурация компьютера
Материнская плата: ASRock P4i65PE (5 PCI, 1 AGP, 4 DDR DIMM, Audio, LAN)
HDD: ST3200827A (200 ГБ) IDE
Звук: Creative SB Live! 5.1 Digital (SB0220) Sound Card
CD/DVD: NEC DVD_RW ND-3551A
Ноутбук/нетбук: Стационарный компьютер
» width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″>
Конфигурация компьютера
Материнская плата: ASUS P8Z77-V LE PLUS
HDD: Samsung SSD 850 PRO 256 Гб, WD Green WD20EZRX 2 Тб
Звук: Realtek ALC889 HD Audio
CD/DVD: ASUS DRW-24B5ST
ОС: Windows 8.1 Pro x64
Прочее: корпус: Fractal Design Define R4
Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ.

Это не окно DOS, а командная строка (cmd.exe выполняет файлы с расширением .cmd).

в командной строке Total Commander

Это сообщение посчитали полезным следующие участники:

Подскажите, пожалуйста: есть cmd-файл, состоящий из одной строки: avz.exe lang=en. Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ. »

——-
Как сказало Дерево Дровосеку: «я — пень».

Это сообщение посчитали полезным следующие участники:

Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ »

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

START [«заголовок»] [/Dпуть] [/i] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/b]
[команда/программа] [параметры]

«заголовок» Заголовок окна.
путь Рабочий каталог.
B Запуск приложения без создания нового окна с отключением
обработки сочетания клавиш ^C. Если приложение не
обрабатывает сочетание клавиш ^C самостоятельно,
единственным способом его прерывания является
использование сочетания клавиш ^Break.
I Новой средой станет исходная среда, переданная
cmd.exe, а не текущая среда.
MIN Запуск команды/программы в свернутом окне.
MAX Запуск команды/программы в развернутом окне.
SEPARATE Запуск 16-разрядной программы Windows в отдельной
области памяти.
SHARED Запуск 16-разрядной программы Windows в общей
области памяти.
LOW Запуск приложения с приоритетом IDLE.
NORMAL Запуск приложения с приоритетом NORMAL.
HIGH Запуск приложения с приоритетом HIGH.
REALTIME Запуск приложения с приоритетом REALTIME.
WAIT Запуск приложения с ожиданием его завершения.
ABOVENORMAL Запуск приложения с классом приоритета ABOVENORMAL
BELOWNORMAL Запуск приложения с классом приоритета BELOWNORMAL
команда/программа
Если это внутренняя команда cmd.exe или пакетный файл,
обработчик команд (cmd.exe) запускается с ключом /K.
Это означает, что окно не будет закрыто после завершения
команды.

Если это не внутренняя команда cmd.exe и не пакетный файл,
значит, это программа, которая будет запущена в графическом
или текстовом окне.

параметры Параметры, передаваемые команде/программе.

Изменения вызова внешних команд из командной строки или с помощью команды
START при включении расширенной обработки команд:

Для вызова неисполняемых файлов через механизм сопоставления типов файлов
достаточно просто ввести имя файла в командной строке. Например, команда
WORD.DOC запускает приложение, сопоставленное расширению имени файла .DOC.
Сведения о создании подобных сопоставлений из пакетных файлов приведены
в описаниях команд ASSOC и FTYPE.

При запуске 32-разрядного приложения с графическим интерфейсом пользователя
обработчик команд CMD.EXE не ожидает завершения работы приложения перед
возвратом к приглашению командной строки. Подобное новое поведение НЕ
относится к запуску приложений из пакетных файлов.

При выполнении командной строки, первым элементом которой является текстовая
строка «CMD» без расширения имени файла или указания пути, она заменяется
значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из
текущей активной папки, если таковая программа там имеется.

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

Обратите внимание, что этот синтаксис подобен синтаксису для переменной
PATH, то есть отдельные элементы разделяются точкой с запятой.

Если при поиске исполняемого файла нет соответствия ни одному из расширений,
выполняется проверка соответствия указанного имени папки. Если имя папки
соответствует указанному, то команда START запускает EXPLORER для этого
пути. Если такое действие выполняется из командной строки, то оно
эквивалентно выполнению команды CD /D для указанного пути.

Источник

Поделиться с друзьями