如何用DOS做批处理文件删除以某个字符开头的文件夹?

2025-02-24 12:07:41
推荐回答(4个)
回答1:

找到原因了,是百度的问题,你把每一行后面多余的空格删除就可以了!!!!!!

::复制以下内容,保存为bat文件,放在d盘运行即可.
::1,删除d盘所有m开头的文件夹
@echo off
for /f "delims=*" %%i in ('dir/b/ad d:\') do call :ss "%%i"
goto :eof
:ss
set aa=%1
if %aa:~1,1%==m goto ji
goto :eof
:ji
attrib -h -s d:\%1
rd/s/q %1
goto :eof

::2,删除d盘以纯数字命名的文件夹,除12345以外
@echo off
set a=-1
for /f %%i in ('dir /ad/b d:\') do call :www %%i
goto :eof
:www
set x=%1
setlocal enabledelayedexpansion
:dui
set /a a+=1
call set b=!!x:~%a%,1!!
if "!b!"=="" goto ok
for %%i in (1 2 3 4 5 6 7 8 9 0) do (
set aa=%%i
if !b!==%%i goto dui
)
goto :eof
:ok
if not %x%==12345 goto rd
goto :eof
:rd
rd /q/s d:\%x%
goto :eof

3,将第二种方法的倒数第3,4,5行去掉就是删除所有以纯数字命名的文件夹.

回答2:

找不到文件的情况请注意删除 set path=D:\Program Files\Tencent\QQ\ 路径最后的空格. 另外: 为 数字 的目录名大小需大于 10000 ,这样可以比较准确的删除非 QQ名文件夹,因为用户 QQ号码 还未见过小于 10000 的. 如果不需要 尽可以删除 if !str! gtr 10000 测试结果如下: 删除前:



删除中:



删除后:



非纯数字组合\小于10000的纯数字组合将不会删除 @echo off setlocal enabledelayedexpansion set path=D:\Program Files\Tencent\QQ\ :top cls echo 1.用批处理删除以某个数字开头的纯数字组成的文件夹 echo 2.删除以数字命名的文件夹 echo 3.保留某指定文件夹,删除其他文件夹 set /p num=您的选择: if %num% equ 3 goto %num% :1 if %num% equ 1 ( set /p num1=删除以哪个字符开头的文件夹? set "flag=!num1!*" ) else ( set "flag=*") for /f "delims=" %%i in ('dir /b /ad "%path%%flag%"') do ( set /a str=%%i>nul 2>nul if !str! gtr 10000 rd "%path%%%i" ) pause&goto :top :3 echo 输入你的QQ号码如:10001 echo 你也可以定义多个需要保留的号码用空格" "分隔 echo 10001 10002 10003 set /p "num=" for %%a in (%num%) do set "%%a=a" for /f "delims=" %%i in ('dir /b /ad "%path%"') do ( set /a str=%%i>nul 2>nul if not defined %%i if !str! gtr 10000 rd "%path%%%i") pause&exit

回答3:

问题修改次数已经达到最大限度了,只能在这里感谢两位了,我把悬赏加到了70作为酬谢!dospcl的回答有选择性,这点很好,小楼_春雨的回答虽然要修改才能针对不同情况使用,但是更全面,达到我要的三种目的。无奈只能选一个作为最终答案,还请海涵!
再次多谢两位帮忙!

回答4:

的确想不出什么好办法.............