Obtenha nomes de arquivos descobertos recursivamente no prompt de comando

15

Eu encontrei um pequeno obstáculo tentando obter apenas os nomes dos arquivos (sem extensões ou caminhos de arquivo) de forma recursiva. Isso funcionou para mim na pasta raiz:

dir /b

Mas quando eu adicionei / s para digitalizar recursivamente eu também tenho caminhos de arquivos antes de nomes de arquivos que eu não quero. Existe uma maneira de obter nomes de arquivos nus de todas as subpastas em um diretório?

Estou no Windows 7 x64 Eu prefiro usar o prompt de comando regular não PS ou VBS

    
por TMRW 07.06.2011 / 17:59

3 respostas

13

Use o seguinte comando:

dir /b /a /s
  • / b retira a data e outros detalhes da saída
  • / a apenas exibe o nome do arquivo, nenhum caminho
  • / s permite uma listagem de diretórios recursiva

Se você precisar salvar a saída em um arquivo, poderá usar:

dir /b /a /s >> list_of_names.txt

EDIT Na verdade, a solução acima não alcança os objetivos da pergunta original. Uma coisa que notei na pergunta é que o post pede uma listagem recursiva. que a outra resposta não tem, então eu acho que adicionar "/ s" na resposta do outro respondedor fará o truque

for /f %a in ('dir /b /s') do @echo %~na
    
por 08.11.2011 / 22:58
5

Tente isto:

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

Mais informações sobre como funciona e o que está fazendo, digite for /?

    
por 07.06.2011 / 18:18
2
for /r %i in (*) do @echo %~ni

ou

forfiles /s /c "cmd /c if @isdir==FALSE noquotes.bat @fname"

assumindo um arquivo noquotes.bat em seu % PATH% com este conteúdo

@echo %~1

para a abordagem / r explicada

for /r percorre o diretório atual recursivamente (você pode especificar um diretório for /r drive:\path\ , o diretório atual é assumido) e executa o comando especificado por do para cada arquivo correspondente no conjunto (*) . O conjunto (.) corresponderia apenas aos diretórios. @echo% ~ ni Este comando funciona como está no prompt. Duplique suas cotações se você colocá-lo dentro de um arquivo de lote. ou seja, for /r %%i in (*) do @echo %%~ni

abordagem dos arquivos explicada

/s enumera o subdiretório atual e todos os subdiretórios
/c executa o comando dentro das aspas
@isdir e @fname é um símbolo emitido na cadeia de comando
O arquivo de lote extra noquotes.bat ajuda a remover as aspas duplas com% ~ 1 (parâmetro 1)
forfiles também permite que você especifique um caminho para iniciar em forfiles /P C:\Windows ...

    
por 26.07.2016 / 21:50