中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-02 19:12
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]自动搜索并删除畸形文件夹 查看 873 回复 2
楼 主 [原创]自动搜索并删除畸形文件夹 发表于 2010-01-22 14:42 ·  中国 上海 中移铁通
新手上路
积分 12
发帖 9
注册 2009-11-13 23:35
16年会员
UID 154711
性别 男
状态 离线
set alldrive=a b c d e f g h i j k l m n o p q r s t u v w x y z
for %%i in (%alldrive%) do if exist %%i:\ dir /ad /s /b %%i:\|(findstr /e "\.") >>1.txt
set /p var=<1.txt
echo rd /s /q \\?\^"%var%^">1001.bat
echo del 1.txt>>1001.bat
echo del 1001.bat>>1001.bat
这个批处理是自己写的,仅供大家参考学习,这个批处理有个缺点就是一次只能删除一个畸形文件夹,以后有机会的话做完善点,现在只能找以.结尾的畸形文件夹
至于。。畸形文件夹,大家可以去百度找资料,只要以.为后缀的文件夹都可以删除
谨慎使用,rd /s /q \\?\这句命令很可能删除你本来不想删除的文件,所以。。。
2 发表于 2010-01-22 19:15 ·  中国 湖北 襄阳 老河口市 电信
初级用户
积分 175
发帖 45
注册 2007-08-04 16:16
18年会员
UID 94640
性别 男
状态 离线
一般我们所认为的畸形文件夹为:md test..\\

删除方法为:rd /s /q test..\\

你的代码好像有问题
3 发表于 2010-01-24 08:20 ·  中国 北京 鹏博士宽带
初级用户
积分 49
发帖 43
注册 2007-01-20 03:28
19年会员
UID 77088
性别 男
状态 离线
下面是我以前做的删除带点目录脚本,利用 8.3 格式名,生成一个command.bat,删除前可以先看到要删除的目录,避免误删。

@echo off
setlocal enabledelayedexpansion
echo :: 请确认可以删除以下文件后再执行command.bat>command.bat
echo :: 不需要删除的目录请务必删除本文件中的条目>>command.bat
echo :: 如果下面为空表明未找到带点目录>>command.bat
echo ::===========================================>>command.bat
:input
set /p dir=请输入绝对目录名:
if "%dir%"=="" goto input
if not exist %dir% goto input
echo 正在查找 %dir%下带.目录
for /f %%a in ('dir /ad /s /b "%dir%" ^|findstr /e /c:"."') do (call :start %%a)
start notepad command.bat
goto :eof

:start
set PA=%1
set num=0
:loop1
set FN1=!PA:~%num%!
echo %FN1% |find "\">nul
if !errorlevel!==0 (
set /a num+=1
goto loop1
) else (
set PN=!PA:~0,%num%!
set FN=%FN1%
goto loopout
)
:loopout
call :countlenth %PA%
set PAL=%lenth%
call :countlenth %PN%
set PNL=%lenth%
call :countlenth %FN%
set FNL=%lenth%

for /f "tokens=4,5" %%y in ('dir /ad /x %PN%^|findstr /i /e /c:" %FN%"') do (
findstr /i /b /e /c:"rd /s /q %PN%%%y" command.bat>nul
if not !errorlevel!==0 (
>>command.bat echo :: 删除目录 %PN%%%z
>>command.bat echo rd /s /q %PN%%%y
)
)
goto :eof

:countlenth
set str=%1
set num=0
set lenth=0
:loop
if "!str:~%num%,1!"=="" (
set lenth=%num%
goto :eof
)
set /a num=1+%num%
goto loop
论坛跳转: