Cmd 使用dir";./*的奇怪行为*&引用;(注意正斜杠)
具有以下文件夹结构:Cmd 使用dir";./*的奇怪行为*&引用;(注意正斜杠),cmd,directory,Cmd,Directory,具有以下文件夹结构: A[Dir] File.txt B[目录] C[目录] 当前工作目录位于C 如果我这样做 DIR "..\File.txt" DIR "../*.*" 我没有得到任何文件,这是预期的,因为B是空的 然而,如果我这样做 DIR "../File.txt" --> Note the / instead of the \ 我一个小时就拿到文件了 如果我这样做 DIR "..\File.txt" DIR "../*.*" 我得到的文件在A
- A[Dir]
File.txt- B[目录]
- C[目录]
- B[目录]
DIR "..\File.txt"
DIR "../*.*"
我没有得到任何文件,这是预期的,因为B是空的
然而,如果我这样做
DIR "../File.txt" --> Note the / instead of the \
我一个小时就拿到文件了
如果我这样做
DIR "..\File.txt"
DIR "../*.*"
我得到的文件在A和目录输出说,文件在B
下面是DIR命令的输出:
E:\a>dir
Directory of E:\a
2016-09-19 08:20 <DIR> .
2016-09-19 08:20 <DIR> ..
2016-09-19 08:20 5 File.txt
2016-09-19 08:19 <DIR> b
E:\a>cd b
E:\a\b>dir
Directory of E:\a\b
2016-09-19 08:19 <DIR> .
2016-09-19 08:19 <DIR> ..
2016-09-19 10:20 <DIR> c
E:\a\b>cd c
E:\a\b\c>dir
Directory of E:\a\b\c
2016-09-19 10:20 <DIR> .
2016-09-19 10:20 <DIR> ..
E:\a\b\c>dir "..\*.*"
Directory of E:\a\b
2016-09-19 08:19 <DIR> .
2016-09-19 08:19 <DIR> ..
2016-09-19 10:20 <DIR> c
E:\a\b\c>dir "../*.*"
Directory of E:\a\b
2016-09-19 08:20 <DIR> .
2016-09-19 08:20 <DIR> ..
2016-09-19 08:20 5 File.txt
2016-09-19 08:19 <DIR> b
E:\a>dir
E:\a目录
2016-09-19 08:20 .
2016-09-19 08:20 ..
2016-09-19 08:20 5 File.txt
2016-09-19 08:19 b
E:\a>CDB
E:\a\b>目录
E:\a\b的目录
2016-09-19 08:19 .
2016-09-19 08:19 ..
2016-09-19 10:20摄氏度
E:\a\b>cd c
E:\a\b\c>dir
E:\a\b\c目录
2016-09-19 10:20 .
2016-09-19 10:20 ..
E:\a\b\c>目录“.\*.*”
E:\a\b的目录
2016-09-19 08:19 .
2016-09-19 08:19 ..
2016-09-19 10:20摄氏度
E:\a\b\c>目录“./*.*”
E:\a\b的目录
2016-09-19 08:20 .
2016-09-19 08:20 ..
2016-09-19 08:20 5 File.txt
2016-09-19 08:19 b
真奇怪。有人知道发生了什么吗?是的,
dir
tokenizer中有一个错误
dir
命令将尝试将请求的路径+文件掩码解析为完整的目录路径,然后它将附加文件掩码(或asume a*
)以枚举解析路径内的文件
奇怪的是,文件夹解析在确定起始文件夹应该是什么(输出中的E:\a\b目录)方面没有任何问题,但是当使用正向斜杠时,标记器在从文件掩码中删除相对文件夹引用时有问题
结果是,一旦将文件夹解析为E:\a\b\/*.txt>(正确),就会添加完整的。/*.txt
(错误的部分,相对文件夹引用应该与文件掩码分离),然后枚举E:\a\b\/*.txt
(即E:\a\*.txt
)
现在,如果我们使用当前active directory创建一个更深层的层次结构(E:\a\b\c\d
),那么可以通过将请求替换为dir./../*.txt“
来测试此行为。在这种情况下,起始文件夹将解析为
E:\a\b
,但随着“../../*.txt”
的追加,最后将枚举根文件夹
注意:目前我手头没有一个调试器可以保证100%的安全性,但是它已经在Api监视器下运行cmd
实例进行了测试,Api调用显示了所描述的行为。请不要交叉发布。看见你已经问过了。