[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何在文件名用*号时精确匹配扩展名

如何在文件名用*号时精确匹配扩展名

如 del D:\*.tmp
它会把 像 .tmpll / .tmplx ……只要是扩展名前面是tmp的文件全删除
怎样在使用通配符 * 号时,能只删除 .tmp扩展名的文件呢?

还有
rem del /a /f /s /q "%SystemRoot%\driver?\*.pnf"
rem del /a /f /s /q "%SystemRoot%\driver?\InfCache.1"
里面的 ? 是表示一个安符的通配符还是本来是 s 乱码了而已?

[ 本帖最后由 wxfly 于 2009-12-6 00:35 编辑 ]

第一个...我这里测试是可以的,你不会是用了*.tmp*叭!?
第二个...通配符(我这里测试是通配符)

TOP

原帖由 Seter 于 2009-12-6 09:02 发表
第一个...我这里测试是可以的,你不会是用了*.tmp*叭!?
第二个...通配符(我这里测试是通配符)
W

VISTA测试 :
DEL得解释 del *.xx 只会删扩展名为.XX的文件而不会删扩展名为.XX1 .XX3 .XXX之类的文件
测试了几种文件都没问题,
但如楼主所说del D:\*.tmp它会把 像 .tmpll / .tmplx ……只要是扩展名前面是tmp的文件全删除

绝对不是*.tmp*

TOP

难道是vista的BUG?

TOP

怪了,tmpl真的被删掉了
那就这样..
for %%i in (d:\*.tmp) do if "%%~xi"==".tmp" del "%%i"

TOP

貌似 dir del 比较的都是后缀的前三位

TOP

原帖由 Seter 于 2009-12-6 12:31 发表
怪了,tmpl真的被删掉了
那就这样..
for %%i in (d:\*.tmp) do if "%%~xi"==".tmp" del "%%i"

我也想过用for
但我是要删除系统盘目录及其子目录下所有的.tmp,而不是一个固定目录下的

del /f /s /q %systemdrive%\*.tmp

不知是不是像这样写也成

~xi 是什么意思呢?

谢谢

TOP

原帖由 yangfengoo 于 2009-12-6 13:24 发表
貌似 dir del 比较的都是后缀的前三位


我的系统是 win2008r2

你的这个说法应该是对的,
上面那位
DEL得解释 del *.xx 只会删扩展名为.XX的文件而不会删扩展名为.XX1 .XX3 .XXX之类的文件
测试了几种文件都没问题,
但如楼主所说del D:\*.tmp它会把 像 .tmpll / .tmplx ……只要是扩展名前面是tmp的文件全删除

当是两位时就不会这样,因为能比较前三位,但如果是三位以上相同就不行了!

TOP

返回列表