批处理文件-删除文件夹内容和父文件夹 [英] Batch File- Delete Folder contents and the parent folder

查看:119
本文介绍了批处理文件-删除文件夹内容和父文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在BATCH FILE的开头创建了以下目录来存储临时内容:

I make the following directory at the beginning of my BATCH FILE to store temporary content:

%userprofile%\ Downloads \ VersionCheckWillDelete"

"%userprofile%\Downloads\VersionCheckWillDelete"

我希望删除此文件夹及其所有内容.

I wish to remove this folder and all of its contents.

以下内容仅删除文件夹中的数据,而不删除文件夹本身:

The following removes only the data in the folder but not the folder itself:

RD /S /Q "%userprofile%\Downloads\VersionCheckWillDelete"

原来它没有删除它,因为BATCH文件仍在使用它.我考虑过POWERSHELL仍在打开并尝试杀死它,但它尚未打开.如何在后台关闭它.它不再需要运行了吗? 该进程无法访问该文件,因为该文件正在被另一个进程使用."

Turns out that it isn't deleting it because the BATCH file is still using it. I have considered POWERSHELL being still open and trying to kill it but it isn't open. How do I close it in the background. It doesn't need to be running anymore? "The process cannot access the file because it is being used by another process."

以下是我的代码:

 @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

推荐答案

解决方案: 删除START"URL"行允许BATCH删除该文件夹.不确定为什么要依赖Chrome,但可以解决问题.因此,将RD命令放在START"命令之前,对我来说一切正常.

SOLUTION: Removing the START "URL" line allowed the BATCH to delete the folder. Not sure why it was dependent on Chrome but it solves the issue. So, placing the RD command before the START "" command makes everything work for me.

这篇关于批处理文件-删除文件夹内容和父文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆