中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 18:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求教 DEL /s/q e: *.tmp 查看 748 回复 4
楼 主 求教 DEL /s/q e: *.tmp 发表于 2009-04-29 09:44 ·  中国 湖北 宜昌 电信
初级用户
积分 47
发帖 41
注册 2009-04-24 02:17
17年会员
UID 143654
性别 男
状态 离线
我想删除E盘所有的TMP格式文件就写了
DEL /s/q e: *.tmp
怎么一运行就什么都没了?
错哪了?
2 发表于 2009-04-29 09:58 ·  中国 湖北 宜昌 电信
初级用户
积分 47
发帖 41
注册 2009-04-24 02:17
17年会员
UID 143654
性别 男
状态 离线
另如果
for /r e:\ %%a in (*.tmp) do del "%%a"
怎么会删除*.tmp2等文件
难道*.tmp只匹配到.后面3位?象*.tmp3,*.tmpY,*.tmpHHH,都算*.tmp?
3 发表于 2009-04-30 00:11 ·  中国 湖北 宜昌 电信
初级用户
积分 47
发帖 41
注册 2009-04-24 02:17
17年会员
UID 143654
性别 男
状态 离线
苍天啊,大地啊。
回复呢 ?怎么不见了啊!
4 发表于 2009-04-30 00:26 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
我也一直以为 *.tmp 就表示扩展名为 tmp 的文件...

原来 *.tmp 匹配的文件是,最后一个点后面含“tmp”。如有以下文件:

a.tmp
a.tmp2
a.tmp.txt

dir /b *.tmp 会匹配前两个文件。

————————————————————————————————————————

可以改成:

for /r e: %%a in (*.tmp) do del "%%~dpna.tmp" 2>nul




for /f "delims=" %%a in ('dir/b/a-d/s e:\*.tmp^|findstr /i "\.tmp$"') do del "%%a"


————————————————————————————————————————

奇怪的结果:
C:\Test>dir /b
1.bat
1.bat.123
12.bat
12.bat123
123.bat123

C:\Test>dir /b ?.bat
1.bat

C:\Test>dir /b ??.bat
1.bat
12.bat

C:\Test>dir /b ???.bat "我以为会匹配 123.bat123"
1.bat
12.bat

C:\Test>dir /b ????.bat
1.bat
12.bat

C:\Test>dir /b ?????.bat
1.bat
12.bat
123.bat123

C:\Test>dir /b ??????.bat
1.bat
12.bat
123.bat123

C:\Test>dir /b ???????.bat
1.bat
12.bat
123.bat123

C:\Test>dir /b ????????.bat
1.bat
12.bat
12.bat123
123.bat123


[ Last edited by tireless on 2009-4-30 at 00:32 ]
5 发表于 2009-04-30 01:19 ·  中国 湖北 宜昌 电信
初级用户
积分 47
发帖 41
注册 2009-04-24 02:17
17年会员
UID 143654
性别 男
状态 离线
我也测试了的确很奇怪。不明白怎么会这样。
论坛跳转: