Ну, вы можете начать его свернутым с start
, если этого достаточно. На самом деле скрыть это сложно (хотя я могу придумать вариант прямо сейчас).
По сути, вам нужно определить, был ли пакет запущен, дважды щелкнув по нему. Вы можете сделать это, определив специальную переменную и поищите ее:
@echo off
if not defined FOO (
set FOO=1
start /min "" %~0
exit /b
)
rem here whatever you wanted to do originally in the batch
Пока переменная FOO
не определена (что, вероятно, является значением по умолчанию почти везде), этот пакет снова будет самопроизвольно свернут, но с переменной, определенной первой. Среды передаются подпроцессам, поэтому это работает.