Ни один из существующих ответов не предоставляет чистый способ для пакетного файла удалить себя и выйти без видимого сообщения об ошибке.
Простое включение del "%~f0"
удаляет сценарий, но также приводит к уродливому "Пакетный файл не может быть найден." сообщение об ошибке.
Если скрипт разрешает закрыть родительский процесс CMD (окно консоли), то следующее работает нормально без каких-либосообщение об ошибке:
del "%~f0"&exit
Но это немного сложнее, если вы хотите, чтобы скрипт удалил сам себя и завершил работу без закрытия родительского процесса CMD и без какого-либо сообщения об ошибке.
Метод 1: Запустите второй процесс, который выполняется в том же окне консоли, которое фактически выполняет удаление.EXIT /B
, вероятно, не является необходимым, но я вставил его, чтобы максимизировать вероятность того, что пакетный скрипт закроется до того, как процесс STARTed попытается удалить файл.
start /b "" cmd /c del "%~f0"&exit /b
Метод 2: Создание и передача управленияв другой временный пакетный файл, который удаляет себя и вызывающего, но не использует CALL и перенаправляет stderr на nul.
>"%~f0.bat" echo del "%~f0" "%~f0.bat"
2>nul "%~f0.bat"