有没有办法强制CMD';s dir命令对长名称应用通配符?
我搜索了很多,但没有找到相关的问题。如果我的问题是重复的,请提前道歉。 我有一堆文件,其名称如下所示:有没有办法强制CMD';s dir命令对长名称应用通配符?,cmd,directory,wildcard,Cmd,Directory,Wildcard,我搜索了很多,但没有找到相关的问题。如果我的问题是重复的,请提前道歉。 我有一堆文件,其名称如下所示: Eighth Text Document - Copy 8.txt Fifth Text Document - Copy 5.txt First Text Document 1.txt Fourth Text Document - Co
Eighth Text Document - Copy 8.txt
Fifth Text Document - Copy 5.txt
First Text Document 1.txt
Fourth Text Document - Copy 4.txt
Ninth Text Document - Copy 9.txt
Second Text Document - Copy 2.txt
Seventh Text Document - Copy 7.txt
Sixth Text Document - Copy 6.txt
Third Text Document - Copy 3.txt
当我使用dir命令查找名称中包含数字“1”的文件时:
dir *1.txt
它列出了所有文件:
Eighth Text Document - Copy 8.txt
Fifth Text Document - Copy 5.txt
First Text Document 1.txt
Fourth Text Document - Copy 4.txt
Ninth Text Document - Copy 9.txt
Second Text Document - Copy 2.txt
Seventh Text Document - Copy 7.txt
Sixth Text Document - Copy 6.txt
Third Text Document - Copy 3.txt
通配符似乎应用于短名称:
EIGHTH~1.TXT
FIFTHT~1.TXT
FIRSTT~1.TXT
FOURTH~1.TXT
NINTHT~1.TXT
SECOND~1.TXT
SEVENT~1.TXT
SIXTHT~1.TXT
THIRDT~1.TXT
我想知道是否有一种方法可以将通配符仅应用于文件的长名称???我在(*1.txt)do echo%a中为%a尝试了
,但效果相同
因此,我可以建议您使用findstr
管道化输出,并匹配正则表达式:
dir /B | findstr /R ".*1\.txt"
*
就像regex中的*
一样:任意字符任意次数
\。
告诉正则表达式引擎匹配实际点,而不是正则表达式小丑点
/B
dir的选项只打印文件名,使得查找str
的工作更容易
只会回来
First Text Document 1.txt
我可以向您推荐一个python解决方案,或者只使用MSYS中的ls
,但这不是本机批处理/Windows。避免使用dir
命令搜索短名称的唯一方法是删除它们(fsutil
)。在不删除短名称的情况下,您唯一的选择是使用适合问题解决的解决方法。删除所有短名称是否有风险???后果是什么?这取决于删除它们的位置以及运行的软件的要求。见文件。