Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

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

Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


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

Отправлено: 22:34, 21-05-2013

 

Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
if "%~1"=="" del "%~f0"
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:53, 21-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


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

Отправлено: 23:10, 21-05-2013 | #3


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


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

Отправлено: 23:22, 21-05-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось Iska, 22-05-2013 в 00:12. Причина: Убрал затесавшееся «него»

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:26, 21-05-2013 | #5


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


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

Отправлено: 23:27, 21-05-2013 | #6


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата Iska:
в худшем — удалите существующий там одноимённый пакетный файл. »
Я даже не задумался, что такое возможно. Спасибо.

Отправлено: 23:30, 21-05-2013 | #7


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


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

В тот день я узнал, что такое System Restore…
Источник: Урок bat-аники

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

Отправлено: 00:15, 22-05-2013 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Самоудаление батника запускаемого без параметров.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] запуск скрипта без параметров, скрипт предлагал ввести параметры ejik_off Скриптовые языки администрирования Windows 13 09-10-2012 14:07
7 / 2008 R2 - Авто-установка или "тихая" без настроя параметров Mademan Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 1 10-08-2011 19:56
CMD/BAT - [решено] Как внести данные в реестр из батника без подтверждения запроса и запустить прогу? Nun-Nun Скриптовые языки администрирования Windows 3 11-05-2011 11:41
CMD/BAT - Изменение схемы питания и ее параметров из батника alecsandrb Скриптовые языки администрирования Windows 3 28-09-2009 19:00
Самоудаление АД Kanonir Microsoft Windows NT/2000/2003 4 18-04-2007 10:25




 
Переход