Ответу Мерлина Моргана-Грэма удается удалить запущенный пакетный скрипт, но генерируется следующее сообщение об ошибке: " Пакетный файл не найден. " Это не проблема, если окно консоли закрывается, когда скрипт завершается, так как сообщение будет мигать так быстро, что никто его не увидит. Но сообщение об ошибке очень нежелательно, если консоль остается открытой после завершения сценария.
Джон Фаминелла имеет правильное представление о том, что для безошибочного удаления пакетного файла необходим еще один процесс. Планирование задачи может работать, но есть более простой способ: используйте START для запуска нового процесса удаления в той же консоли. Процессу нужно инициировать и выполнить процесс, поэтому у родительского сценария есть шанс завершить работу до того, как произойдет удаление.
start /b "" cmd /c del "%~f0"&exit /b
Обновление 2015-07-16
Я обнаружил еще один очень удобный способ удаления пакетного сценария без создания сообщения об ошибке. Техника зависит от недавно обнаруженного поведения GOTO (обнаруженного некоторыми русскими), описанного на английском языке в http://www.dostips.com/forum/viewtopic.php?f=3&t=6491
Таким образом, (GOTO) 2>NUL
ведет себя как EXIT /B
, за исключением того, что он позволяет выполнять сцепленные команды в контексте вызывающей стороны!
Так что все, что вам нужно, это
(goto) 2>nul & del "%~f0"