PDA

Показать полную графическую версию : [решено] Запуск скриптом самого себя


Himyar
07-09-2018, 12:50
Здравствуйте, есть такой код:
@echo off
%1 start ""/min cmd /c "%~f0" :& exit /b
..тут команды...

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

Что в данном случае делает %1? Что делает :&? Если их убрать, то скрипт не работает. Прошу помощи знатоков.
p.s. код отсюда (http://forum.oszone.net/thread-306782.html)

Elven
07-09-2018, 13:31
здесь (http://dl.gsu.by/doc/use/ntcmds.htm) написано

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

Busla
07-09-2018, 15:38
что примет $1 при повторном вызове сценария? »
впишите
echo %1
и увидите

Himyar
07-09-2018, 15:48
Выводится :, неясно для чего этот аргумент и почему без него не работает

YuS_2
07-09-2018, 16:57
Ну, что тут суперсложного-то?
Пакетник запускает сам себя, а чтобы не получить бесконечный запуск, необходимо закомментировать строку запуска...
cmd /c "%~f0" :
где %~f0 - собственно, имя сценария
поэтому при самозапуске сценария получите аргумент %1 равный символу ":", что и послужит "комментарием".

Himyar
07-09-2018, 17:02
YuS_2, спасибо большое




© OSzone.net 2001-2012