У меня есть скрипт .bat
, запускающий программу java
.
Программа java
удаляет папку, в которой находится .bat
.
У меня нет возможности прикоснуться к программе java
. Я могу изменить только файл .bat
.
Проблема в том, что файл .bat
после удаления сразу останавливает его выполнение без завершения.
Но есть некоторые задачи очистки, которые нужно выполнить после выхода из программы java
.
Я попытался скопировать файл .bat
в другое место и запустить его в месте, где он не будет удален. Увы, после удаления оригинального .bat
, поскольку он все еще выполняется, происходит такой же сбой, и он не завершается.
Вот два примера файлов (для примера давайте представим, что они находятся в D:\tmp
):
delete.bat
echo "delete start"
pause
del launch.bat
pause
echo "delete end"
launch.bat
echo "launch start"
setlocal enabledelayedexpansion enableextensions
if "%CD%"=="C:\tmp" (
echo "in temp"
d:
cd \tmp
delete.bat
)
if "%CD%" NEQ "C:\tmp" (
echo "not in temp"
mkdir C:\tmp
copy launch.bat C:\tmp\launch.bat
echo "launch copied"
C:
cd \tmp
cmd /c launch.bat
)
echo "launch end"
Запуск launch.bat
будет работать, если выполнение скопированного launch.bat
отделено от исходного.
Кто-нибудь знает способ заставить .bat
завершить выполнение, даже если он был удален во время выполнения?