Board logo

标题: 求教 DEL /s/q e: *.tmp [打印本页]

作者: yangfengoo     时间: 2009-4-29 09:44    标题: 求教 DEL /s/q e: *.tmp

我想删除E盘所有的TMP格式文件就写了
DEL /s/q e: *.tmp
怎么一运行就什么都没了?
错哪了?
作者: yangfengoo     时间: 2009-4-29 09:58
另如果
for /r e:\ %%a in (*.tmp) do del "%%a"  
怎么会删除*.tmp2等文件
难道*.tmp只匹配到.后面3位?象*.tmp3,*.tmpY,*.tmpHHH,都算*.tmp?
作者: yangfengoo     时间: 2009-4-30 00:11
苍天啊,大地啊。
回复呢 ?怎么不见了啊!
作者: tireless     时间: 2009-4-30 00:26
我也一直以为 *.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"
————————————————————————————————————————

奇怪的结果:

  Quote:
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 ]
作者: yangfengoo     时间: 2009-4-30 01:19
我也测试了的确很奇怪。不明白怎么会这样。