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

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

本帖最后由 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

本来想分析一下原因的,但是觉得好累,就不写了。

貌似是 FindFirstFile FindNextFile 的问题(没有跟踪调试,但 hash 和 dir 的原理一样,测试也是如此)
大概是被理解成短名了吧?这个问题挺可怕的,值得注意

TOP

好像也不是短名的原因...执行 dir *~1 返回的结果看得我莫名其妙
还发现个问题
  1. dir ?.txt
  2. ::匹配 . 前有且只有一个字符的 txt 文件
  3. dir *.txt?
  4. ::实际匹配的是 *.txt
复制代码
看来这 api 匹配后缀名时实在是太宽松了...

TOP

本帖最后由 CrLf 于 2014-8-27 12:34 编辑

另:
突然想起有哪位大师提到过 start ^>^> 的问题,用 dir 测试了一下,我勒个去...
^> 相当于 ?
  1. dir ^>
复制代码
^< 则相当于 *.
  1. dir ^<
  2. ::相当于 *.
  3. dir ^<^<
  4. ::^<^< 相当于 *.*.
复制代码

TOP

返回列表