命令提示符数字通配符?

命令提示符数字通配符?

命令提示符中是否有数字通配符?

例如,

dir *.1*

将列出扩展名以 1 开头的所有文件。

答案1

不,MS-DOS 仅支持两个通配符(基于 CP/M)。它们是“*”,表示任意字符序列,以及“?”,表示单个字符。通配符中没有字母和数字的区别,也不支持使用正则表达式将通配符限制为数字。

答案2

你的答案文字问题是“不” - 但如果你真正的问题是:

我是否可以在 cmd 下以某种方式仅选择名称中包含数字的文件?

那么如果它是基于 nt 的(更具体地说W2k加) 是的,可以做到。诀窍是使用findstr支持简单正则表达式的 来过滤结果。
dir /b |findstr /r "\.[0-9]"将为您提供与dir示例中类似的结果。这意味着它也会返回file.1st.second(就像 dir 一样)。
这里的小问题是它只会列出文件名,但即使这样也可以解决:
for /f %F in ('dir /b ^|findstr /r "\.[0-9]"') do @echo %~ftzaF将以格式良好的样式打印您的列表dir注意它必须在当前目录中运行!

或者我会推荐
如果你有powershell可用(或者你愿意安装它)启动它并执行:
gi .\* |? {$_.name -match "\.[0-9]"}

已编辑根据OP评论:

这将使用以下方法枚举文件for /r
最简单,但非常慢(实际上除了少数文件外无法使用),因为它对findstr每一行运行:

for /r "c:\temp" %F in (*) do @echo %~nxF | findstr /r "\.[0-9]" && echo %F

更复杂,但速度更快(使用专门准备的字符串允许管道传输到单个实例findstr

for /f "tokens=2 delims=* eol=*" %F in ('^(for /r "directory_root" %F in ^(*^) do @echo %~nxF*%~dpnxF^) ^|findstr /r "\.[0-9].*\*"') do @echo %F 

或(功能相同,但更易于阅读:>)

(for /r "directory_root" %F in (*) do @echo %~nxF*%~dpnxF) | for /f "tokens=2 delims=* eol=*" %F in ('findstr /r "\.[0-9].*\*"') do @echo %F

所有示例都直接从命令行运行

相关内容