我在BATCH FILE的开头创建了以下目录来存储临时内容:
“%userprofile%\ Downloads \ VersionCheckWillDelete”
我希望删除此文件夹及其所有内容。
以下内容仅删除文件夹中的数据,而不删除文件夹本身:
RD /S /Q "%userprofile%\Downloads\VersionCheckWillDelete"
编辑:原来它没有删除它,因为BATCH文件仍在使用它。我考虑过POWERSHELL仍在打开并尝试杀死它,但它尚未打开。如何在后台关闭它。它不再需要运行了吗? “该进程无法访问该文件,因为它正在被另一个进程使用。”
以下是我的代码:
@echo off
:version_chk
SET USER_VER=1.1.2-RC
ECHO * * * * * * * * * * * * *
ECHO CHECKING FOR UPDATES...
ECHO * * * * * * * * * * * * *
cd "%userprofile%\Downloads"
mkdir "%userprofile%\Downloads\VersionCheckWillDelete"
cd "%userprofile%\Downloads\VersionCheckWillDelete"
powershell -Command "Invoke-WebRequest https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/blob/master/Version_Check -OutFile 'version_check.HTML'"
findstr "VERSION-" "version_check.HTML" >> "GitHub_Version.txt"
cd "%userprofile%\Downloads\VersionCheckWillDelete"
for /f "delims=" %%x in (GitHub_Version.txt) do set GH_VER_STRING_ORIGINAL=%%x
for /f "tokens=2 delims=<" %%x in ("%GH_VER_STRING_ORIGINAL%") do set GH_VER_STRING_FIRST_HALF=%%x
SET "GH_VER=%GH_VER_STRING_FIRST_HALF:*VERSION-=%"
if %USER_VER% == %GH_VER% GOTO NORMAL_PROCESS
:UPDATE_AVAIL
CLS
START "" "https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/releases"
ECHO * * * * * * * * * * * * *
ECHO UPDATE AVAILABLE
ECHO * * * * * * * * * * * * *
ECHO.
ECHO.
ECHO GITHUB VERSION: %GH_VER%
ECHO YOUR VERSION: %USER_VER%
ECHO.
ECHO.
ECHO PLEASE CLOSE THIS BATCH FILE AND GO DOWNLOAD THE MOST RECENT UPDATE AVAILABLE:
ECHO.
ECHO https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/releases
ECHO.
ECHO.
ECHO OR YOU MAY PRESS ANY KEY TO CONTINUE USING THIS VERSION.
ECHO.
ECHO.
cd "%userprofile%\Downloads"
rd /S /Q "%userprofile%\Downloads\VersionCheckWillDelete\"
PAUSE
:NORMAL_PROCESS
CLS
cd "%userprofile%\Downloads"
rd /S /Q "%userprofile%\Downloads\VersionCheckWillDelete\"
ECHO Your BATCH file is the most up to date version.
PAUSE
答案 0 :(得分:0)
要删除目录,您需要使用此命令。
rmdir path
del -f path
答案 1 :(得分:0)
解决方案: 删除START“ URL”行允许BATCH删除文件夹。不确定为什么要依赖Chrome,但可以解决问题。因此,将RD命令放在START“”命令之前,对我来说一切正常。
答案 2 :(得分:0)
首先绝对没有理由将目录更改为%UserProfile%\Downloads\VersionCheckWillDelete
。此外,如果这是Downloads
目录的用途之一,则可能没有理由使用%Temp%
位置。无论选择哪种方式,您实际上只需要解析的version_check.html
文件,因此为什么不将其直接放在所选位置,而不是创建新目录并随后将其删除。 (这样,您只需要在必要时删除文件,我希望每次运行时文件都会被覆盖)。
也就是说,这可能就是我要做的事情:
@Echo Off
Set "USER_VER=1.1.2-RC"
Echo * * * * * * * * * * * * *
Echo CHECKING FOR UPDATES...
Echo * * * * * * * * * * * * *
Echo(
If Not Exist "%UserProfile%\Downloads\VersionCheckWillDelete\" MD "%UserProfile%\Downloads\VersionCheckWillDelete"
%__AppDir__%WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command "Invoke-WebRequest -URI \"https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/blob/master/Version_Check\" -OutFile \"%UserProfile%\Downloads\VersionCheckWillDelete\version_check.html\""
For /F "Tokens=3 Delims=><" %%G In ('%__AppDir__%findstr.exe ">VERSION-[0-9]" "version_check.html"') Do For /F "Tokens=1* Delims=-" %%H In ("%%G") Do Set "GH_VER=%%I"
RD "%UserProfile%\Downloads\VersionCheckWillDelete"
If "%USER_VER%" == "%GH_VER%" Echo Your batch file is the most up to date version.& GoTo Continue
ClS
Echo * * * * * * * * * * * * *
Echo UPDATE AVAILABLE
Echo * * * * * * * * * * * * *
Echo(
Echo GITHUB VERSION: %GH_VER%
Echo YOUR VERSION: %USER_VER%
Echo(
Echo YOU ARE NOT USING THE LATEST VERSION!
Echo(
Echo 1. DOWNLOAD THE LATEST VERSION NOW
Echo 2. CONTINUE USING THIS OUTDATED VERSION
Echo(
%__AppDir__%choice.exe /C 12
If ErrorLevel 2 GoTo Continue
Echo Your Web Browser will now open on the Releases page and this batch file will close.
%__AppDir__%timeout.exe /T 5
Start "" "https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/releases"
GoTo :EOF
:Continue
Echo(
Echo Continuing . . .
Pause
ClS