Как лучше открывать батник скрытно?

Ссылка скопирована
cmd
1 ответ

Нужно понять: мой бат файл открывает 2 доп. Консоли и устанавливает им директорию. С помощью.vbs пытаюсь запустить скрытно, но новым консольным окнам параметр скрытности не наследуется. Как это исправить?

Bat:

@echo off cd /d "C:\Users\bot" start "Main Bot" cmd /k venv\Scripts\python.exe main.py start "Converter" cmd /k venv\Scripts\python.exe -m xlsx_converter.converter

Vbs:

Set WshShell = CreateObject("WScript.Shell") WshShell.Run """C:\Scripts\start bot.bat""", 0, False
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Алексей Денисов Ответ

Если батник запускает дополнительные консоли через start, то скрытие самого .bat через VBS не скрывает дочерние окна. Вы скрываете только первый процесс, а новые cmd.exe создаются уже отдельно и открывают свои окна. Нужно либо запускать каждую дочернюю команду скрыто, либо не создавать новые консоли через start.

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

Если всё же нужен VBS, запускайте команды через WScript.Shell.Run с параметром окна 0:

Set shell = CreateObject("WScript.Shell")
shell.Run "cmd /c cd /d C:Usersbot && script1.bat", 0, False
shell.Run "cmd /c cd /d C:Usersbot && script2.bat", 0, False

Set shell = CreateObject("WScript.Shell") shell.Run "cmd /c cd /d C:Usersbot && script1.bat", 0, False shell.Run "cmd /c cd /d C:Usersbot && script2.bat", 0, False

Третий параметр False означает не ждать завершения. Если нужно ждать, ставьте True.

Если в батнике сейчас так:

start cmd /k "cd /d C:Usersbot && npm run one"
start cmd /k "cd /d C:Usersbot && npm run two"

start cmd /k "cd /d C:Usersbot && npm run one" start cmd /k "cd /d C:Usersbot && npm run two"

то окна будут появляться. Замените логику на запуск без start или перенесите запуск каждого процесса в VBS/PowerShell.

Для PowerShell можно использовать Start-Process с WindowStyle Hidden:

Start-Process cmd.exe -ArgumentList '/c cd /d C:Usersbot && script1.bat' -WindowStyle Hidden

Start-Process cmd.exe -ArgumentList '/c cd /d C:Usersbot && script1.bat' -WindowStyle Hidden

Важно: не используйте такие способы для скрытого запуска чужих/вредоносных процессов. Для нормальной автоматизации лучше Планировщик заданий, сервис Windows или NSSM. Они проще диагностируются, логируются и не выглядят как попытка спрятать неизвестный процесс.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно