在cmd.exe环境下,通配符*和*.*的作用一样吗?

问题描述 投票:0回答:1

我注意到在 cmd 中,使用 (*) 或 (*.*) 将匹配所有文件和目录。例如,当将控制台应用程序的参数设置为(*.*)时,它不仅匹配当前目录中的文件,还匹配目录。如何使用通配符仅匹配文件?它最初的设计目的是像这样工作吗(匹配文件和目录)?目前,我的解决方案是在处理 (*) 时循环遍历 argv 参数并检查每个参数是否是目录。还有比这个更简单的方法吗?另外,在Windows环境下,在不使用API函数或stat函数的情况下,是否还有其他C函数或CRT(C Runtime Library)函数可以确定目标是文件还是目录?

c windows
1个回答
0
投票
如果使用

*

 api,
*.*
NtQueryDirectoryFile[Ex]
不一样。但是
FindFirstFile[Ex]
api 特别检查
*.*
掩码并将其替换为
*
。所以是否相同,取决于使用什么 api。无论如何,如果我们需要枚举所有不带过滤器的文件,最好使用
*
。如果我们恰好需要
*.*
逻辑(仅包含
.
符号的文件)需要使用
NtQueryDirectoryFile[Ex]

© www.soinside.com 2019 - 2024. All rights reserved.