我需要列出 C 盘上所有名称长度为七个字符的文本文件。我尝试了以下命令
DIR ???????.txt
但是,此命令显示包含七个及更少字符的文件。我可以使用哪个命令来仅显示包含七个字符的文件?
答案1
通配符?
最多匹配一次任何字符,因此dir ???????.txt
将匹配任何扩展名前面最多有七个字符的 .txt 文件。没有dir
直接支持的通配符可以精确匹配任何字符一次,但命令的输出可以通过管道传输到findstr
支持正则表达式的 。
在这种情况下,dir /B | findstr /R "^.......\.txt"
就可以了。
答案2
我编写了一个批处理文件,检查输出dir ???????.txt
并仅回显包含 7 个字符(11 个,包括 .txt)的文件。
@ECHO OFF
REM --- Call Subroutine for all files of Len 1 - 7 characters ---
For /f "delims=*" %%a in ('dir "c:\???????.txt" /b') do Call :CheckLen %%~nxa
REM --- End Batchfile ---
Goto :eof
:CheckLen
REM --- Place Filename in Variable FNAME ---
Set FName=%*
REM --- IF Valiable FName <> First 10 characters of FName, FName has ---
REM --- 11 Characters (7 + .txt). Echo Output ---
if NOT "%FName%"=="%FName:~0,10%" Echo %FName%
注意:如果您还想搜索 C: 的子目录,请在行中'dir "c:\???????.txt" /b'
添加/s
。这可能需要很长时间而没有输出。
答案3
DIR /b /s | findstr /r /i "\\.......\.txt$"