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