2

Мне нужно перечислить все текстовые файлы на диске C, имена которых имеют длину семь символов. Я попробовал следующую команду

DIR ???????.txt

Однако эта команда отображала файлы с семью символами и менее. Какую команду я могу использовать, чтобы отображать файлы только с семью символами?

3 ответа3

4

Подстановочный знак ? соответствует любому символу не более одного раза, поэтому dir ???????.txt будет соответствовать любому .txt-файлу с расширением, которому предшествует не более семи символов. Не существует подстановочного знака, который соответствует какому-либо символу в точности один раз, который dir напрямую поддерживает, но выходные данные команды могут быть переданы в findstr , который поддерживает регулярные выражения.

В этом случае dir /B | findstr /R "^.......\.txt" добьется цели.

1
DIR /b /s | findstr /r /i "\\.......\.txt$"
1

Я написал командный файл, который проверяет вывод 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%

Примечание. В строке 'dir "c:\???????.txt" /b' добавьте /s если вы также хотите искать в подкаталогах C:. Это, вероятно, займет много времени без вывода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .