CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Ответить
Аватара пользователя
Lucretius

CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Сообщение Lucretius »

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

Параметры необходимы для указания меток: GoTo %1 .
Аватара пользователя
Lucretius

Re: CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Сообщение Lucretius »

Foreigner, спасибо. То, что нужно.

Скажите, насколько важно указывать полный путь в переменной: %~f0 ? Я считал что достаточно del %0 ...
Аватара пользователя
Lucretius

Re: CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Сообщение Lucretius »

Lucretius, Если запускать из другой папки, то он не удалится. Поместите куда-нибудь в %path% и запустите по названию.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Сообщение Foreigner »

Цитата Lucretius:



Я считал что достаточно del %0
CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.




Это сработает только в том случае, если текущим каталогом будет каталог пакетного файла. Если не так (попробуйте сделать текущим каталогом какой-либо другой, а затем запустить оттуда пакетный файл; либо банально текущий каталог меняется в самом пакетном файле; либо не разрешено использование UNC путей, а пакетный файл запускается оттуда), то, в лучшем случае, Вы получите отлуп «Файл не найден», в худшем — удалите существующий там одноимённый пакетный файл.
Аватара пользователя
Lucretius

Re: CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Сообщение Lucretius »

Цитата Foreigner:



Если запускать из другой папки, то он не удалится. Поместите куда-нибудь в %path% и запустите по названию.
CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.




Ясно, спасибо.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Сообщение Foreigner »

Цитата Iska:



в худшем — удалите существующий там одноимённый пакетный файл.
CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.




Я даже не задумался, что такое возможно. Спасибо.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Сообщение Foreigner »

Цитата Foreigner:



Я даже не задумался, что такое возможно.
CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.




Классический пример Вы должны помнить:


читать дальше »



Цитата:



Опасайтесь бездумного применения команды cd %~dp0 без проверки результата выполнения. Теоретически, эта команда должна сменить текущий каталог на каталог, в котором расположен командный файл. Как правило, это работает. Однако возможны неожиданности. Однажды был написан простой командный сценарий, задача которого была просто удалить все каталоги рядом с собой. В «свою» директорию он переходил как раз через cd %~dp0. Все было проверено на локальной машине – работало замечательно. После этого сценарий был помещен на файл-сервер, где ему и полагалось быть. Я зашел с помощью Far в сетевой каталог, и для контрольной проверки решил запустить файл еще раз. Дальнейшее словно в тумане. cmd.exe правильно определил местонахождение bat-файла: \\servername\sharename\directory. Однако при попытке сделать туда cd, он сказал, что UNC-пути в качестве текущих каталогов не поддерживаются и лучше он сменит текущий каталог на C:\WINDOWS… Это было действительно мудрое решение… Часть сценария, отвечавшая за удаление всех каталогов, сработала отлично – хорошо, что я успел вовремя остановить это безумие.



В тот день я узнал, что такое System Restore…



Источник:
Урок bat-аники




Я лично пользую пару pushd/popd (несмотря на то, что у меня UNC-пути разрешены), но вообще сам пример показателен.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»