Я пытаюсь сделать следующее, но удалить загруженную папку, содержащую пакетный файл, не удается:
ПРИМЕЧАНИЕ. Все исполняемые файлы, приложения, командный файл и т. Д. Содержатся в файле file.zip.
- Пользователь загружает файл .zip в любой каталог и распаковывает.
- Пользователь запускает исполняемый файл, который находится в разархивированной папке.
- Это, в свою очередь, запускает два портативных приложения и некоторые другие вещи.
- После выполнения обязанностей я удаленно запускаю и запускаю тот же exe-файл, но на этот раз я выбираю опцию, которая запускает пакетный файл (находится в разархивированной папке), который запускает 30-секундный таймер, а затем должен остановить приложения и удалить файл. .zip и распакованная папка, включая сам пакетный файл.
Ниже приведен пакетный файл:
@echo off
mode con: cols=32 lines=7
color 4f
title
echo 30 Second Delay
echo Close window to abort
echo/
echo/
echo 0%% 100%%
SET /P var= <NUL
set count=0
:loop
PING -n 2 127.0.0.1 >NUL 2>&1
call :printline _
set /a count=count+1
if %count%==30 goto finish
goto loop
:printline
REM Print text passed to sub without a carriage return.
REM Sets line variable in case %1 intereferes with redirect
set line=%1
set /p var=%line%<NUL
exit /b
:finish
cls
color 0f
title Finished
mode con: cols=80 lines=25
echo Do NOT close this window!
echo/
echo Killing processes...
echo/
echo/
echo/
taskkill /t /f /im app1mainprocess.exe >nul
timeout /t 5 >nul
taskkill /t /f /im app2mainprocess.exe >nul
timeout /t 5 >nul
echo Do NOT close this window!
echo/
rem echo Restarting Windows Explorer...
rem timeout /t 10 >nul
rem taskkill /f /im explorer.exe >nul
rem start explorer.exe
echo Do NOT close this window!
echo/
echo Deleteing files and folders...
echo/
rem timeout /t 10 >nul
Set "Folder2Del=%~dp0"
cd ..
IF EXIST "file.zip" DEL "file.zip" /s /q >nul
rem echo %scrptDir%
echo Do NOT close this window!
echo/
echo Still working...
timeout /t 10 >nul
rd %Folder2Del% /s /q
(goto) 2>Nul & RD /S /Q "%Folder2Del%" & exit
Проблема, с которой я сталкиваюсь, заключается в том, что папка никогда не удаляется. Я понимаю, что мой код неверен, но другая причина в том, что один из файлов dll в разархивированной папке иногда все еще используется процессом dllhost.exe.
Я не уверен, безопасно ли добавлять строку, которая убивает процесс dllhost.exe, или нет, но мой код все равно не будет работать, потому что у меня что-то не так с тем, как он удаляет сам пакетный файл и папку, которая содержит его.
Какие строки мне нужно отредактировать и безопасно ли убивать dllhost.exe?