中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 18:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [未结]带点畸形目录 批量 非空判断访问删除
楼 主 [未结]带点畸形目录 批量 非空判断访问删除 发表于 2008-02-29 21:22 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
补充,用rd命令结合||可以判断,但这会删除带点空目录,
有没其他方法,dir 什么的?
声明类似下面的代码思想的不算,这个改变了文件的创建日期.

rd 123..\ 2>nul||echo 非空
md 123..\ 2>nul

-------------------------------------------------------------------------------------------------------------
17:30补充
还是得靠自己,现在我把代码贴出来供大家分享,不错话收藏.
(对其他畸形目录可能失效,后续完善,)
@echo off&setlocal enabledelayedexpansion
:by plp626@cn-dos.net on 2008-3-1
echo 当前目录内所有非空带点畸形目录及其包含文件如下:
set ln=----------------------------------------------
set m=0
for /f "tokens=4-5" %%a in ('dir/ad/x^|findstr /e \.') do (
echo %%b|findstr E>nul||dir/b %%a|find/v ":">nul&&(set/a m+=1
echo !m!!ln!&echo %%~dpb%%b 的目录:&echo.
dir/a/b %%a
) )
pause


另附代码:

访问
@echo off
:by plp626@cn-dos.net on 2008-3-3
if "%1"=="" dir/a&goto :eof
if "%1"=="/f" goto f
if "%1"=="/c" more "%~dpnx0"&goto :eof
if "%1"=="/?" goto syntax
set folder=%1
echo %folder%|findstr /e \.>nul&&set folder=%folder:.=\.%||(dir/a %1)
for /f "tokens=4-5" %%a in ('dir/ad/x^|findstr /e \.') do (
for /f "tokens=1-2" %%i in ('echo %%a %%b^|findstr /ec:" %folder%"') do (
dir/a/s/x %%i
) )
goto :eof
:f
dir /a/b|findstr /e \.||echo 当前路径下没有发现后缀带点目录
goto :eof
:syntax
echo dir命令的增强,可访问带点畸形目录.&echo.
echo /f 查看当前路径下的畸形目录
echo /c 查看%~nx0的源代码. &echo.
echo usage1:
echo 访问畸形目录时直接输入你所看到的畸形目录名.
echo 访问畸形目录内的目录用短名.(后续将改进)
echo 访问常规目录与dir命令同,有空个时加上双引号.
echo.&echo example:
echo 访问123.目录: %~n0 123.
goto :eof

删除(直接粘贴代码到命令行下.切勿在ghost备分文件所在路径下运行!)

即使目录内存放Con, Prn, Aux, Nul, Lpt?, Com?等(?表示数字1-9)非带点畸形目录也照删。

::删当前目录内任意带点畸形目录
for /f "delims=" %a in ('dir/ad/b^|findstr /e "\."') do rd /q/s "\\?\%a" 2>nul


::删当前目录,包括子目录内的任意带点畸形目录
for /f "delims=" %a in ('dir/ad/s/b^|findstr /e "\."') do rd /q/s "\\?\%a" 2>nul


::在当前路径目录树下 删任意带点空畸形目录 显示 非空畸形目录
for /f "delims=" %a in ('dir/ad/s/b^|findstr /e "\."') do rd "%a.\" 2>nul||echo %a


[ Last edited by plp626 on 2008-4-27 at 12:11 AM ]
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
523066680 +2 2008-03-15 18:16
regvip2008 +2 2008-04-17 14:29
qinbuer +4 2008-06-29 21:27
2 发表于 2008-03-01 00:40 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
没人? 是我说的不很明白吗?
发这个帖子不是我没事整事,因为有些U盘病毒竟然就存在这畸形目录里.
畸形目录里也可以存放文件的,
比如用命令
copy *.* 123..\

就可以将当前路径下的所有文件复制到123.文件夹里.
现在就是怎么判断这畸形目录里是否有文件存在,即是否非空.
望大家踊跃参与!

[ Last edited by plp626 on 2008-3-1 at 12:43 AM ]
3 发表于 2008-03-01 12:17 ·  中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
说来奇怪,虽然文件被拷贝进去,但是查看其文件夹属性仍为0字节!
4 发表于 2008-03-01 12:18 ·  中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
UID 99089
性别 男
状态 离线
说来奇怪,虽然文件被拷贝进去,但是查看其文件夹属性仍为0字节!
5 发表于 2008-03-01 14:45 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
学校机房里的机子有不少畸形目录里,而大多畸形目录没有放文件,
我就是要看看有那些目录里有文件,
望达人指点迷津,偶不胜感激!

[ Last edited by plp626 on 2008-3-1 at 06:59 PM ]
6 发表于 2008-03-01 15:36 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
哈哈.终于想出来了.

此贴已结!

[ Last edited by plp626 on 2008-3-1 at 03:51 PM ]
7 发表于 2008-03-01 17:20 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
楼主想出来了,可否将方法共享一下?
致精致简!
8 发表于 2008-03-01 18:42 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
UID 110072
性别 男
状态 离线
再一个就是如果在 a. 里面放一个 nul\ 就不能直接用Rd ae216~1 /s /q 删除了啊
还非得进入ae216~1 然后Rd nul 啊……(只是个人观点)
9 发表于 2008-03-01 19:44 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
523066680说的是
我的代码算法就是以文件名后缀为"."来设计的.
有时间我结合第一个代码把这个考虑进去考虑下,应该不难.
10 发表于 2008-03-01 21:10 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
UID 103127
性别 男
状态 离线
实际做起来还真麻烦,给个测试代码
请删之:
@echo off
for %%a in (plp 626 cn dos 1 0 fdf d ret 就 是 lo aux com1 nul con pp 465 漂来漂 看 ai) do (
md %%a...\ %%a...\...\
for %%b in (con nul aux com1) do (
md %%a...\%%b\
copy *.bat "%%a...\%%b\"
md %%a...\%%b\con\
) )


[ Last edited by plp626 on 2008-3-1 at 09:57 PM ]
11 发表于 2008-03-01 21:46 ·  中国 湖北 武汉 电信
初级用户
积分 108
发帖 49
注册 2008-02-26 18:54
UID 111491
性别 男
状态 离线
恐怕只有用start打开这些畸形目录来判断其是否为空........
12 发表于 2008-03-01 21:52 ·  中国 湖北 武汉 电信
初级用户
积分 108
发帖 49
注册 2008-02-26 18:54
UID 111491
性别 男
状态 离线
还可用type来判断,测试代码如下:
md d:\1_11..\&echo %random%>d:\1_11..\11.txt&type d:\1_11..\11.txt
13 发表于 2008-03-01 23:31 ·  中国 重庆 电信
初级用户
积分 34
发帖 14
注册 2007-12-13 18:21
UID 105563
性别 男
状态 离线
学习了。不错。
14 发表于 2008-03-02 00:05 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
我们看到显示的原本文件夹少个点。

如果你在同目录放一个123.
再建一个123目录。
你访问123.的时候就是实质访问123文件夹。所以看大小的话可以显示123目录的,如果没有123目录是0。

系统认123.是123的属性。。。所以你看不到实际的大小,同样你双击访问不了也是这个原因,你建立了123后就相当于访问123文件夹。

123.你也可以点删除了,不提示错误,因为会删除123目录。

PS:
不知道看完上面你能猜到麽?

访问带点目录不是非要start……的哦。

知道上面的了就很容易理解……
应该是原创嘿嘿。起码我不是在别的地方转的。




md 123...\
你访问这个目录就是访问那个畸形带.的目录,大小什么的信息也都可以滴~
15 发表于 2008-03-02 00:34 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
呵呵,这个早有讨论过了的。
你所访问的都是123这个目录的信息,实际上123。。。这个目录还是存在的,里面的内容你通过双击123这个目录也是看不到的。
致精致简!
1 2 3 5 下一页 ›
论坛跳转: