Como encontrar facilmente arquivos sem extensão usando o Windows

Como encontrar facilmente arquivos sem extensão usando o Windows

Tenho alguns arquivos em minha unidade de disco rígido que não possuem nenhuma extensão. É muito difícil encontrá-los manualmente, eu realmente não gosto do fato de que precisaria substituir meu mouse mais cedo por causa do dano não grande, mas muito proeminente, causado ao hardware ao tentar encontrar esses arquivos constantemente clicando e rolando, já que são algumas centenas de arquivos entre milhares em uma única pasta.

Alguém aqui conhece um comando cmdou PowerShellou alguma sintaxe de consulta avançada de pesquisa do Windows Explorer para ajudar a simplificar esta tarefa?

Responder1

Encontrando arquivos sem extensões de arquivo no Windows

Windows Explorer - Sintaxe de consulta avançada

ConformePetSerAlaqui estão alguns dosSintaxe de consulta avançada do File Explorermétodo para começar, mas leia mais abaixo para obter o equivalenteLinha de comandoeScript em lotemétodos para esta tarefa.

Pesquisa recursiva

kind:= -folder type:= -[] extension:= []

Não Recursivo

Basta selecionar o "Pasta atual"opção através da GUI"Procurar" aba

insira a descrição da imagem aqui

ou

kind:= -folder type:= -[] extension:= [] folder:"C:\folder\path"

Você pode usar umpara /floop iterando a saída de umdiretóriocomando com os parâmetros /Be /A-De, em seguida, use algumas condiçõesselógica para gerar apenas arquivos sem extensões usando substituições para os arquivos iterados no diretório especificado.

Linha de comando

Observação: Isso pressupõe que o diretório em que você está na linha de comando é o diretório que você precisa pesquisar para exibir os arquivos sem extensões.

FOR /F "TOKENS=*" %A IN ('dir /B * /A-D') DO IF /I [%~nxA]==[%~nA] ECHO %~A

Script em lote

Observação: Este é um script em lote cujo SET Src=valor você define como o diretório que você precisa pesquisar para exibir arquivos sem extensões.

@ECHO ON
SET Src=C:\folder\path
FOR /F "TOKENS=*" %%A IN ('DIR /B "%Src%\*" /A-D') DO IF /I [%%~nxA]==[%%~nA] ECHO %%~A
PAUSE
EXIT

Recursos adicionais

  • Para /F
  • FOR /?

    Além disso, a substituição de referências de variáveis ​​FOR foi aprimorada. Agora você pode usar a seguinte sintaxe opcional:

    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    
  • Dir

  • Se

Responder2

Para a solução PowerShell:

Get-ChildItem -Path $Path -Recurse -File -Filter '*.'

Ou:

Get-ChildItem -Path $Path -Recurse -File | Where-Object Extension -eq ''

Observe que o -Fileparâmetro requer o PowerShell v3+.

Responder3

No prompt de comando, basta usar *.:

C:\diretório\nome>diretório

24/08/2018 03h33 .
24/08/2018 03:33 ..
24/08/2018 03h33 16h
24/08/2018 03h33 18 aC
24/08/2018 03h33 20 def
               3 Arquivo(s) 54 bytes

C:\diretório\nome> dir *.

24/08/2018 03h33 .
24/08/2018 03:33 ..
24/08/2018 03h33 16h
               1 Arquivo(s) 16 bytes

C:\diretório\nome>

Lembre-se de que o prompt de comando do Windows não é Unix. Em nomes de arquivos Unix, ponto (.) é apenas um caractere comum (exceto pelo fato de que os nomes de arquivo que começam com ponto estão ocultos). No Unix, *e*significa todos os nomes de arquivos que contêm um ee *.*significa todos os nomes de arquivos que(explicitamente)contém um..

As regras do prompt de comando são mais complicadas.  *significa todos os nomes de arquivos (mesmo aqueles com extensão). E *.*também significa todos os nomes de arquivos (mesmo aqueles que não contêm um.). Mas *.significa todos os nomes de arquivos que não possuem extensão.

Responder4

ls | ? {$_.Extension -eq ''}

Isso usa abreviação máxima. Mas na verdade é o mesmo código do @BaconBits. Eu prefiro taquigrafia. É mais difícil de ler para iniciantes, mas é mais expressivo e sucinto

informação relacionada