Самоудаление батника запускаемого без параметров.
Нужно чтобы батник самоликвидировался, но только в случае запуска его без параметров.
Параметры необходимы для указания меток: GoTo %1 .
|
Код:
if "%~1"=="" del "%~f0"
|
Foreigner, спасибо. То, что нужно.
Скажите, насколько важно указывать полный путь в переменной: %~f0 ? Я считал что достаточно del %0 ...
|
Lucretius, Если запускать из другой папки, то он не удалится. Поместите куда-нибудь в %path% и запустите по названию.
|
Цитата:
Цитата Lucretius
Я считал что достаточно del %0 »
|
Это сработает только в том случае, если текущим каталогом будет каталог пакетного файла. Если не так (попробуйте сделать текущим каталогом какой-либо другой, а затем запустить оттуда пакетный файл; либо банально текущий каталог меняется в самом пакетном файле; либо не разрешено использование UNC путей, а пакетный файл запускается оттуда), то, в лучшем случае, Вы получите отлуп «Файл не найден», в худшем — удалите существующий там одноимённый пакетный файл.
|
Цитата:
Цитата Foreigner
Если запускать из другой папки, то он не удалится. Поместите куда-нибудь в %path% и запустите по названию. »
|
Ясно, спасибо.
|
Цитата:
Цитата Iska
в худшем — удалите существующий там одноимённый пакетный файл. »
|
Я даже не задумался, что такое возможно. Спасибо.
|
Цитата:
Цитата Foreigner
Я даже не задумался, что такое возможно. »
|
Классический пример Вы должны помнить:
читать дальше »
Цитата:
Опасайтесь бездумного применения команды cd %~dp0 без проверки результата выполнения. Теоретически, эта команда должна сменить текущий каталог на каталог, в котором расположен командный файл. Как правило, это работает. Однако возможны неожиданности. Однажды был написан простой командный сценарий, задача которого была просто удалить все каталоги рядом с собой. В «свою» директорию он переходил как раз через cd %~dp0. Все было проверено на локальной машине – работало замечательно. После этого сценарий был помещен на файл-сервер, где ему и полагалось быть. Я зашел с помощью Far в сетевой каталог, и для контрольной проверки решил запустить файл еще раз. Дальнейшее словно в тумане. cmd.exe правильно определил местонахождение bat-файла: \\servername\sharename\directory. Однако при попытке сделать туда cd, он сказал, что UNC-пути в качестве текущих каталогов не поддерживаются и лучше он сменит текущий каталог на C:\WINDOWS… Это было действительно мудрое решение… Часть сценария, отвечавшая за удаление всех каталогов, сработала отлично – хорошо, что я успел вовремя остановить это безумие.
В тот день я узнал, что такое System Restore…
|
Источник: Урок bat-аники
Я лично пользую пару pushd/popd (несмотря на то, что у меня UNC-пути разрешены), но вообще сам пример показателен.
|
Время: 12:36.
© OSzone.net 2001-