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 cmd
ou PowerShell
ou 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
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 /B
e /A-D
e, 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
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 -File
parâ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 e
e *.*
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