找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27084|回复: 3

[文件操作] dir 使用通配符的一些奇怪问题

[复制链接]
发表于 2014-8-27 00:32:02 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-9 17:17 编辑

危险的通配符
某大神在写BAT的时候发现一个DIR命令的一个奇怪现象:

  1. D:\test>dir /b
  2. 11111111111.txt
  3. 22222222222.txt
  4. 33333333333.txt
  5. aaaaaaaaaaa.txt
  6. bbbbbbbbbbb.txt
  7. ccccccccccc.txt

  8. D:\test>dir /b *1*
  9. 11111111111.txt
  10. 22222222222.txt
  11. 33333333333.txt
  12. aaaaaaaaaaa.txt
  13. bbbbbbbbbbb.txt
  14. ccccccccccc.txt

  15. D:\test>dir /b *~*
  16. 11111111111.txt
  17. 22222222222.txt
  18. 33333333333.txt
  19. aaaaaaaaaaa.txt
  20. bbbbbbbbbbb.txt
  21. ccccccccccc.txt
复制代码
论坛搜索“通配”,发现两个相关的帖子:

http://bbs.bathome.net/viewthread.php?tid=3263

http://bbs.bathome.net/viewthread.php?tid=3795

本来想分析一下原因的,但是觉得好累,就不写了。
发表于 2014-8-27 01:29:37 | 显示全部楼层
貌似是 FindFirstFile FindNextFile 的问题(没有跟踪调试,但 hash 和 dir 的原理一样,测试也是如此)
大概是被理解成短名了吧?这个问题挺可怕的,值得注意
发表于 2014-8-27 01:37:08 | 显示全部楼层
好像也不是短名的原因...执行 dir *~1 返回的结果看得我莫名其妙
还发现个问题
  1. dir ?.txt
  2. ::匹配 . 前有且只有一个字符的 txt 文件
  3. dir *.txt?
  4. ::实际匹配的是 *.txt
复制代码
看来这 api 匹配后缀名时实在是太宽松了...
发表于 2014-8-27 01:43:54 | 显示全部楼层
本帖最后由 CrLf 于 2014-8-27 12:34 编辑

另:
突然想起有哪位大师提到过 start ^>^> 的问题,用 dir 测试了一下,我勒个去...
^> 相当于 ?
  1. dir ^>
复制代码
^< 则相当于 *.
  1. dir ^<
  2. ::相当于 *.
  3. dir ^<^<
  4. ::^<^< 相当于 *.*.
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 06:53 , Processed in 0.026945 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表