标题:
[其他]
【已解决】批处理dir命令中使用通配符列出文件的问题
[打印本页]
作者:
sila
时间:
2017-9-1 20:11
标题:
【已解决】批处理dir命令中使用通配符列出文件的问题
我在使用dir命令列出当前目录里文件名中包含数字1的文件或文件夹,发现使用dir /b *1*这样通配符表示时,居然把目录里的所有文件以及文件夹都列出来了,而不是只列举包含1的文件或文件夹。如图所示:
但使用其它数字就很正常,比如我列举包含数字5的文件,如图:
所以请问各位高手大侠们,这个诡异的问题该如何解决?都已经困扰我好长时间了。
作者:
0000
时间:
2017-9-1 21:23
本帖最后由 0000 于 2017-9-1 21:26 编辑
>dir /?|find "/X"
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
/X 显示为
非 8.3 文件名
产生的
短名称
。格式是 /N 的格式,
>dir /x
驱动器 C 中的卷是 OS
卷的序列号是 8EC0-22F8
C:\Users\dell\文档\126\MPC_HC\0\0000\test 的目录
2017/09/01 21:03 <DIR>
(短名称)
.
2017/09/01 21:03 <DIR> ..
2017/09/01 21:02 0
1
234EDE.reg
2017/09/01 21:01 0 4FRT5H.txt
(这个没有被列出)
2017/09/01 21:02 0 56TFD
1
.rtf
2017/09/01 21:01 0
("1" 在这里!)
6HYG
1
GV.rar
2017/09/01 21:02 0 TGFRDT~
1
.MSC TGFRDTR.
mscr
2017/09/01 21:02 0 YHGFTR~
1
.MSC YHGFTRD.
mscr
2017/09/01 21:02 0 新建WI~
1
.BAT
新建 Windows 批处理文件
.bat
7 个文件 0 字节
2 个目录 51,377,049,600 可用字节
>dir /b *1*
1234EDE.reg
56TFD1.rtf
6HYG1GV.rar
TGFRDTR.mscr
YHGFTRD.mscr
新建 Windows 批处理文件.bat
>
作者:
sila
时间:
2017-9-1 21:57
回复
2#
0000
请问,您这样的回答,想表达什么?
作者:
Batcher
时间:
2017-9-1 22:19
回复
3#
sila
他可能是想让你执行 dir /x 命令看看文件的8.3短名称
作者:
sila
时间:
2017-9-1 23:36
回复
4#
Batcher
使用8.3格式了,那得到的结果都是8.3格式的文件名了,那我还需要这些文件名干嘛?
虽然我现在使用dir+find方式列出需要的文件,但我只是觉得奇怪,为什么dir /b *1*会显示全部文件?
作者:
0000
时间:
2017-9-2 10:20
本帖最后由 0000 于 2017-9-2 10:25 编辑
那个"
1
"在哪都标出来了
如果你没看见的话那就再举个例子
首先,dir /b *1*并没有显示
全部
文件!
其实漏了一个,叫
4FRT5H.txt
,它并没有被列出!
那为什么
TGFRDTR.mscr,YHGFTRD.mscr 和 新建 Windows 批处理文件.bat
被列出了呢?
前面说了
非 8.3 文件名
会
产生
(注意是 产生,不是dir /x做出来的)
短名称
dir /x 告诉我们
TGFRDTR.mscr,YHGFTRD.mscr,新建 Windows 批处理文件.bat
都有短名称。
TGFRDT~
1
.MSC <- TGFRDTR.mscr
YHGFTR~
1
.MSC <- YHGFTRD.mscr
新建WI~
1
.BAT <- 新建 Windows 批处理文件.bat
而dir /b *1*所找到的"
1
"就在这里!
dir /b *5* 就没有找到这里产生的"1".
作者:
sila
时间:
2017-9-2 19:53
本帖最后由 sila 于 2017-9-2 20:00 编辑
回复
6#
0000
首先,我只需要列出文件名,也就是用dir /b后列出的文件名,根本不需要什么8.3格式的短名。更不需要8.3格式里面包含的数字1,你完全把我的题理解错了。因此使用dir /b *1*这样命令后,我只想列出1234EDE.reg、56TFD1.rtf、6HYG1GV.rar这个三个文件名,而不是把其它无关的文件都列出来。最终效果就跟dir /b *5*那样,只列出包含数字5的几个文件而已!
那个4FRT5H.txt没有被列出,就因为它的文件名字数少于8位,所以它就不需要产生8.3格式,因此没有被列出。就因为那些超过8位数的文件名,都产生了8.3格式的文件名,而这8.3格式的就包含了数字1,所以都被列出来了。这就是问题所在吗?那难道系统是以8.3格式为判断标准的?这简直就是。。。。。唉~~~~
作者:
Batcher
时间:
2017-9-2 21:46
回复
5#
sila
你说的对。
如果要解决问题,就用 dir+find 简洁明了不折腾。
如果要理解为什么 dir /b *1* 会显示那些文件,就需要理解8.3短名。我建议暂时不要浪费这个时间了,等以后真正有需求的时候再研究也不迟。
作者:
sila
时间:
2017-9-2 22:52
回复
8#
Batcher
我也是之前要利用dir /b *1*这样的写法列出一些包含数字的文件名,才发现了这样的问题,在网上也没找到相关的资料。虽然后来使用dir+find解决了,过了一段时间后,才想起来这件事,所以就来这里问问看,为什么会有这种奇怪的现象?既然现在知道是因为8.3的缘故,那就解决我的疑惑了。谢谢!
欢迎光临 批处理之家 (http://www.bathome.net/)
Powered by Discuz! 7.2