Como recursivamente listar nomes de arquivos (somente) no DOS / Windows? [duplicado]

18

Eu gostaria de listar recursivamente todos os arquivos em um diretório, mostrando apenas nomes de arquivos (sem extensões e sem os caminhos completos). Estou usando o Windows / DOS.

O mais próximo que consegui com dir foi dir /s /b , mas lista caminhos completos e também mostra as extensões.

Bem, talvez eu possa viver com as extensões, mas devo me livrar dos caminhos!

Alguma idéia?

    
por David B 07.10.2011 / 22:07

4 respostas

26
cd /d C:\Path\To\Source\Folder
for /r %i in (*) do @echo %~ni

Se você precisar salvar a lista em um arquivo, anexe >> C:\Path\To\list_file.txt ao final do comando for .

Se você quiser as extensões, altere %~ni para %~nxi

Para usar em um arquivo em lote, altere todos os % para %%

    
por 07.10.2011 / 22:32
6

Se você estiver disposto a carregar o powershell, este comando deverá fazê-lo.

get-childitem "d:\acc" -recurse|foreach {$_.Basename}
    
por 07.10.2011 / 22:36
5

Fazer algo como o seguinte deve conseguir o que você deseja:

@for /f "delims=" %a in ('Dir /s /b %systemdrive%') do echo %~na

Basta enviar a saída para um arquivo e usá-la de lá, se necessário.

    
por 07.10.2011 / 22:44
3

Não sei se você consideraria um software de terceiros ou não, já que é da Microsoft e vem com o 7, mas o PowerShell resolverá a maior parte do problema com bastante facilidade. Se você ainda não instalou, está disponível para XP no site da Microsoft.

Get-ChildItem -path "C:\Program Files\" -recurse | foreach ($_) {
    write $_.name
}
    
por 07.10.2011 / 22:32