Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Запуск скриптом самого себя (http://forum.oszone.net/showthread.php?t=336577)

Himyar 07-09-2018 12:50 2830388

Запуск скриптом самого себя
 
Здравствуйте, есть такой код:
Код:

@echo off
%1 start ""/min cmd /c "%~f0" :& exit /b
..тут команды...

Как это работает: запускается скрипт, запускается свернутая командная строка, открытое окно командной строки закрывается, в свернутом выполняются команды, пишутся данные в файл.
start ""/min cmd /c - запустить свернутую командную строку без отображения имени и закрыть по выполнении всех команд
"%~f0" - путь выполняемого командного файла
exit /b - завершает работу скрипта

Что в данном случае делает %1? Что делает :&? Если их убрать, то скрипт не работает. Прошу помощи знатоков.
p.s. код отсюда

Elven 07-09-2018 13:31 2830391

здесь написано

Himyar 07-09-2018 13:40 2830393

Я понимаю, что %1 это полученный аргумент при вызове сценария, что & группирует команды, я понимаю, что : указывает на метку, но здесь нет метки.
Я не понимаю как это работает комплексно, что примет $1 при повторном вызове сценария? что делает сочетание :&?

Busla 07-09-2018 15:38 2830406

Цитата:

Цитата Himyar
что примет $1 при повторном вызове сценария? »

впишите
Код:

echo %1
и увидите

Himyar 07-09-2018 15:48 2830410

Выводится :, неясно для чего этот аргумент и почему без него не работает

YuS_2 07-09-2018 16:57 2830424

Ну, что тут суперсложного-то?
Пакетник запускает сам себя, а чтобы не получить бесконечный запуск, необходимо закомментировать строку запуска...
Код:

cmd /c "%~f0" :
где %~f0 - собственно, имя сценария
поэтому при самозапуске сценария получите аргумент %1 равный символу ":", что и послужит "комментарием".

Himyar 07-09-2018 17:02 2830425

YuS_2, спасибо большое


Время: 03:58.

Время: 03:58.
© OSzone.net 2001-