中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-06 09:42
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [未结]带点畸形目录 批量 非空判断访问删除 查看 15,008 回复 67
46 删除任意畸形目录 发表于 2008-03-09 16:36 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
不知为啥代码稍一精简就出错,有个bug还是没消除(不过不容易碰到),有时间再弄吧, 把我给测试晕了,谁有耐心,就慢慢调试吧.
对付10楼那类畸形文件带点目录内含"空参目录",不管有多深!
(放在畸形目录所在路径下运行),这个代码目前没有发现bug
@echo off&mode con lines=2 cols=15
for /f "delims=" %%a in ('dir/ad/s/b^|findstr /e "\."') do (
set a=%%a
setlocal enabledelayedexpansion
call set a=!!a:%%~dpa=!!
call :nul "!a!" "%%~dpa"
popd
)
goto :eof
:nul
pushd %2 2>nul||(echo &del +&goto :eof)
rd /q/s "%b%%~1.\">+ 2>&1
find "\" +>nul||(del +&goto :eof)
for /f %%b in ('sort /r +') do rd/q/s "%%b\" 2>nul
goto nul


任意的畸形目录:"空参目录"内含带点目录以及反者(放在畸形目录所在路径下运行)
@echo off
::ntfs格式下测试,
for /f "delims=" %%a in ('dir/ad/s/b^|findstr /e "\."') do (
set a=%%a
setlocal enabledelayedexpansion
call set a=!!a:%%~dpa=!!
call :nul "!a!" "%%~dpa"
popd
)
pause
goto :eof
:nul
pushd %2 2>nul||call :con %*
:nul1
rd /q/s "%b%%~1.\">+ 2>&1
find "\" +>nul||(del +&goto :eof)
for /f %%b in ('sort /r +') do rd/q/s "%%b\" 2>nul
goto nul
:con
set b=%2
call set b=!!b:%~dp0=!!
goto nul1


[ Last edited by plp626 on 2008-3-14 at 08:43 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
523066680 +2 2008-03-15 18:16
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
47 发表于 2008-03-09 18:16 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
想想真是没事整事,吃多了撑得,想构造一个bug都很难,我就不相信病毒有多变态.

轻轻一点,一切搞定,

回523066680,46楼第2个的代码基本上可以干掉所有可见带点畸形目录.

请测试.(确实有bug但...)

[ Last edited by plp626 on 2008-3-9 at 06:17 PM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
48 发表于 2008-03-09 19:01 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
总结:
最坏的情况就是根目录树下有大量病态的深层的畸形目录,最深层为"空参目录"
为了不时自己盘内的文件随这些目录一起殉葬,就不能直接从最外层目录,用rd/q/s 来删,若有可用文件在空参目录内,那就先把这些文件移出来:(见下面的帖子----文件抽取)
http://www.cn-dos.net/forum/viewthread.php?tid=38153&fpage=1&highlight=###

若你没有给这些空参目录存放文件,(大部分人都没有)那就在根目录内用46楼2代码(在根目录下双击)

其实,知道了病毒的藏身处(那就是不必考虑误删文件了),大可不必这样兴师动众,其实两条命令:
1, rd/q/s >road.txt 2>&1 ... 就获得了深层路径
2, for /f %a in ('sort /r road.txt') do rd /q/s %a\删最深层目录
然后循环1,2,直至删完所有畸形目录

像46楼的代码是自己给自己找麻烦才用得上!

[ Last edited by plp626 on 2008-3-10 at 12:25 AM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
49 发表于 2008-03-14 18:36 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
你的探索精神!……plp626一定会前途无量的,可惜我得读书了,不能常向你学习了,你的代码里好多我都不懂的


去试了一下代码 啊牛啊!你太牛逼了!
第二段代码 第一次打开时,只删除有文件的文件夹,再打开,就把其他机型文件夹删除了,不过不会删除普通文件夹

我去给你的帖加分咯!

[ Last edited by 523066680 on 2008-3-15 at 06:16 PM ]
50 发表于 2008-03-21 00:35 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
re: IF EXIST(已加了,o(∩_∩)o...)

对于畸形目录(空参的或带点的),不管里面再建立什么目录(资源管理器下可见),其实之一行命令即可搞定,并且立竿见影:
rd /s /q \\?\

所以对付畸形目录不必用46楼的代码了

::建立123..\nul\con\nul\目录
md 123..\ 123..\nul\ 123..\nul\con\ 123..\nul\con\nul\
::删除123.目录
rd /q/s "\\?\%cd%\123."


不过这招对资源管理器下不可见目录失效,有时间再续......

[ Last edited by plp626 on 2008-4-16 at 10:44 AM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
51 回-我到你的网络硬盘搞鬼了哦 发表于 2008-03-22 10:18 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
::建立123..\nul\con\nul\目录
md 123..\ 123..\nul\ 123..\nul\con\ 123..\nul\con\nul\
::删除123.目录
rd /q/s \\?\%cd%\123.

这段代码我在网吧没有测试成功


同时又发现了一种畸形目录
elec……老大哥的帖说了设备为名的文件夹 我就想 盘符呢?
于是--md "c: \" 还真成了
鼠标删除的时候和别的不一样------无法读取原磁盘或文件


希望加你Q,我的523066680

[ Last edited by 523066680 on 2008-3-22 at 11:15 AM ]
52 发表于 2008-03-22 15:00 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
那个是"空名"文件夹
执行
md "C: \"
相当于执行
c:&md " \"
---------------------
当然你的光标所在启动在C盘路径下,那就是在当前目录下建立" \"目录了.
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
53 发表于 2008-03-22 19:22 ·  中国 四川 眉山 电信
中级用户
★★
积分 355
发帖 99
注册 2003-01-06 00:00
23年会员
UID 690
性别 男
状态 离线
好文章,不错!在十年前曾经试过,DIR那时的访问层数只能是16层,多了就会报错,但进到16层又可以操作16层以下的内容,就是说总共是32层,好象当时用的6.0DOS,不知道现在的层数会不会还是这样。
54 发表于 2008-03-23 09:48 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
原来是这样子啊……

对了我到你网盘放的垃圾你好像还没删掉……
你论坛主页蛮不错嘛

[ Last edited by 523066680 on 2008-3-23 at 11:14 AM ]
55 发表于 2008-04-15 19:13 ·  中国 天津 联通
初级用户
积分 29
发帖 15
注册 2008-04-14 19:20
18年会员
UID 115892
性别 男
状态 离线
长见识了。。。一直都是用软件 弄那个 autorun.inf的文件夹!防止病毒~
56 发表于 2008-04-16 10:45 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
Originally posted by 523066680 at 2008-3-22 10:18 AM:
::建立123..\nul\con\nul\目录
md 123..\ 123..\nul\ 123..\nul\con\ 123..\nul\con\nul\
::删除123.目录
rd /q/s \\?\%cd%\123.

这段代码我在网吧没有测试成功


同时又发现 ...


你是在桌面测试的吧?空格路径要带双引号,(我忘说明,现在已更新)

[ Last edited by plp626 on 2008-4-16 at 10:47 AM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
57 发表于 2008-05-11 16:18 ·  中国 广东 揭阳 惠来县 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
……你i的话……
病毒可能比你想得还变态,
不过再变态也能干掉,我有个思路(抛砖引玉):
用2>&1来得到畸形目录的深层路径,再用for分析路径干掉所有畸形目录应该不成问题,

我的问!
2>&1 我不知道是什么来的……赐教!谢谢拉

[ Last edited by 523066680 on 2008-5-11 at 04:20 PM ]
58 发表于 2008-05-11 17:34 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
2>&1 比 2> 用途广
大部分情况下二者效果一样
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
59 发表于 2008-06-29 08:43 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
Originally posted by happysoul at 2008-4-15 07:13 PM:
长见识了。。。一直都是用软件 弄那个 autorun.inf的文件夹!防止病毒~



可以的话还是改注册表好了……免疫即使加了访问权限N,avkiller病毒也是:
强制重命名autorun.inf文件夹 然后放入自己的autorun.inf
所以 在强大的病毒面前 免疫文件夹也只是作为一个警报而已:
当发现自己的免疫不见 或被改名的时候 就……
60 发表于 2008-06-30 22:26 ·  中国 福建 厦门 集美区 电信
初级用户
积分 74
发帖 37
注册 2007-06-28 11:47
19年会员
UID 92573
性别 男
状态 离线
大侠请问一下,为什么在win2000 sp4 下 start c:\123.. 不能成功? xp 可以。
论坛跳转: