Exibindo nomes de arquivos com um certo número de caracteres na linha de comando

2

Eu preciso listar todos os arquivos de texto na unidade C cujos nomes têm sete caracteres. Eu tentei o seguinte comando

DIR ???????.txt

No entanto, este comando exibia arquivos com sete caracteres e menos. Qual comando eu poderia usar para exibir apenas arquivos com sete caracteres?

    
por batsta13 22.03.2012 / 11:50

3 respostas

4

O curinga ? corresponde a qualquer caractere no máximo uma vez, então dir ???????.txt corresponderá a qualquer arquivo .txt com uma extensão precedida por no máximo sete caracteres. Não há nenhum curinga que corresponda a qualquer caractere exatamente uma vez que o dir ofereça suporte diretamente, mas a saída do comando pode ser canalizada para findstr , que suporta expressões regulares.

Nesse caso, dir /B | findstr /R "^.......\.txt" fará o truque.

    
por 22.03.2012 / 13:04
1

Eu escrevi um arquivo em lote que examina a saída de dir ???????.txt e ecoa apenas os arquivos que têm 7 caracteres (11, incluindo .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%

Nota: Na linha 'dir "c:\???????.txt" /b' , adicione /s se quiser também procurar os subdiretórios de C :. Isso provavelmente levará muito tempo sem saída.

    
por 22.03.2012 / 12:30
1
DIR /b /s | findstr /r /i "\.......\.txt$"
    
por 23.04.2013 / 05:16