中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]自动搜索并删除畸形文件夹
作者:
标题: [原创]自动搜索并删除畸形文件夹 上一主题 | 下一主题
q1x2x3
新手上路





积分 12
发帖 9
注册 2009-11-13
状态 离线
『楼 主』:  [原创]自动搜索并删除畸形文件夹

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 \\?\这句命令很可能删除你本来不想删除的文件,所以。。。

2010-1-22 14:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
q8249014
初级用户





积分 175
发帖 45
注册 2007-8-4
状态 离线
『第 2 楼』:  

一般我们所认为的畸形文件夹为:md test..\\

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

你的代码好像有问题

2010-1-22 19:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tongzj
初级用户





积分 49
发帖 43
注册 2007-1-20
状态 离线
『第 3 楼』:  

下面是我以前做的删除带点目录脚本,利用 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

2010-1-24 08:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: