我有一個.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
會工作if複製的launch.bat
的執行與最初的一個分開。
有誰知道一種方法,使一.bat
結束了它的執行,即使當它執行它被刪除?
不幸的是在其他地方添加另一個文件在這種情況下不是一個選項。我只能訪問正在被刪除的文件夾,所以我會創建另一個文件來達到同樣的崩潰。 – glmxndr 2009-11-30 17:14:34
也許你可以在Word中打開批處理文件(或使用其他一些機制)來強制對文件進行排它鎖定,然後當Java程序試圖刪除它時,刪除操作將失敗。 – 2009-11-30 19:23:04
有趣的是,如果我將launch.bat設置爲只讀,它不能被delete.bat刪除,但我仍然永遠達不到'echo「啓動結束。 – glmxndr 2009-12-01 08:14:14