Обработка пакетного файла оставляет открытой дополнительную командную строку

Обработка пакетного файла оставляет открытой дополнительную командную строку

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

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

Вот код:

@echo off

cd C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

echo @echo off > startup.bat

echo start (link) >> startup.bat

start startup.bat

Может ли кто-нибудь подсказать, что можно изменить, чтобы решить эту проблему?

решение1

Вы могли бы использоватьВЫЗОВи добавьте /MINпереключатель сНАЧИНАТЬкоманда, чтобы сделать его более скрытым и гарантировать, что окно CMD исчезнет при запускев соответствии с тем, как у вас настроена логика в приведенном выше примере.

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

Пример сценария

@echo off

CD /D C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

echo @echo off > startup.bat
echo START /MIN "" "https://google.com">> startup.bat
echo EXIT /B>> startup.bat

CALL startup.bat
EXIT /B

Дополнительные ресурсы

решение2

Пожалуйста, ознакомьтесь с ссылкой ниже:

Как запустить пакетный файл, не открывая «командное окно»?

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

CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

Где «your_batch_file.bat» — это имя вашего пакетного файла.

Сохраните приведенный выше код как скрипт Visual Basic, например: example.vbs, и запустите его.

решение3

вот почему и что делать:

по умолчанию START запустит эквивалент CMD /K, который открывает второе командное окно и оставляет его открытым. В большинстве случаев вам нужно, чтобы пакетный скрипт завершился, а затем вы просто закроете его консоль CMD, чтобы возобновить исходный пакетный скрипт. Это можно сделать, явно запустив CMD /C ...

Echo Starting
START /wait "demo" CMD /c demoscript.cmd
Echo Done

источник

Связанный контент