Arquivo de lote; Listar arquivos no diretório, apenas nomes de arquivos?

120

Esta é provavelmente uma pergunta muito simples, mas estou tendo problemas com ela. Basicamente, estou tentando escrever um arquivo em lote e preciso listar todos os arquivos em um determinado diretório. O dircomando fará isso, mas também fornecerá várias outras informações; Quero listar SOMENTE os nomes dos arquivos e excluir qualquer outra coisa.

Eu só quero que a saída fique assim:

file1.txt
file2.txt
file3.txt

Desde já, obrigado!

user3558570
fonte
Possível duplicata de suprimir nomes de diretório listados com DIR
Helen

Respostas:

236

O comando completo é:

dir /b /a-d

Deixe-me separar;

Basicamente, /bé isso que você procura.

/a-d irá excluir os nomes dos diretórios.


Para obter mais informações, consulte dir /?outros argumentos que podem ser usados ​​com o dircomando.

Stephan
fonte
8
Está tudo bem para mim :) dir /b /a-d > tmp.txt
Stéphane GRILLON
2
Não funciona /Spara obter nomes de arquivos de subdiretórios também.
Farhan Ghumra
@xyroid você leu o selteno /a-d will the exclude directory names?
Stephan
4
Não estou excluindo se eu quiser imprimir os nomes dos arquivos dos subdiretórios.
Farhan Ghumra
Isso estava muito perto do que eu precisava. Eu precisava dos caminhos absolutos e da recursão em subdiretórios. Aqui está o que eu usei:dir /B /A-D /S
EmpathicSage
34

Você também pode tentar isso:

for %%a in (*) do echo %%a

Usando um forloop, você pode obter echotodos os nomes de arquivo do diretório atual.

Para imprimi-los diretamente do console:

for %a in (*) do @echo %a
npocmaka
fonte
7

Se você também precisa dos subdiretórios, você precisa de um comando "dir" e um comando "Para"

dir /b /s DIRECTORY\*.* > list1.txt

for /f "tokens=*" %%A in (list1.txt) do echo %%~nxA >> list.txt

del list1.txt

coloque seu diretório raiz no comando dir. Ele criará um list1.txt com nomes de caminho completos e, em seguida, um list.txt apenas com os nomes dos arquivos.

Mike_Gre
fonte
5

1. Abra o bloco de notas

2. Criar um novo arquivo

3. digite a linha abaixo

dir /b > fileslist.txt

4.Salve " list.bat"

É isso aí. agora você pode copiar e colar este list.batarquivo " " em qualquer local de sua pasta e clicar duas vezes nele, ele criará um " fileslist.txt" junto com a pasta de diretório e a lista de nomes de arquivo.

Saída de amostra: insira a descrição da imagem aqui

Nota: Se você quiser criar uma lista de nomes de arquivo junto com a subpasta, você pode criar um arquivo em lote com o código abaixo.

dir /b /s > fileslist.txt
Premkumar Manipillai
fonte
2
E se eu não quiser que o arquivo de saída "fileslist.txt" seja incluído na lista?
Behnam
4
  • Por que não usar where, em vez dir?

Na linha de comando:

for /f tokens^=* %i in ('where .:*')do @"%~nxi"

No arquivo bat / cmd:

@echo off 

for /f tokens^=* %%i in ('where .:*')do %%~nxi
  • Resultado:

file_0003.xlsx
file_0001.txt
file_0002.log
where .:*
  • Resultado:

G:\SO_en-EN\Q23228983\file_0003.xlsx
G:\SO_en-EN\Q23228983\file_0001.txt
G:\SO_en-EN\Q23228983\file_0002.log

Para recursivamente:

where /r . *
  • Resultado:

G:\SO_en-EN\Q23228983\file_0003.xlsx
G:\SO_en-EN\Q23228983\file_0001.txt
G:\SO_en-EN\Q23228983\file_0002.log
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0004.docx
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0005.csv
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0006.odt
  • Para loop obter caminho e nome:

  • Na linha de comando:
for /f tokens^=* %i in ('where .:*')do @echo/ Path: %~dpi ^| Name: %~nxi
  • No arquivo bat / cmd:
@echo off 

for /f tokens^=* %%i in ('where .:*')do echo/ Path: %%~dpi ^| Name: %%~nxi
  • Resultado:

 Path: G:\SO_en-EN\Q23228983\ | Name: file_0003.xlsx
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0001.txt
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0002.log

  • Para loop, obtenha o caminho e o nome recursivamente:

Na linha de comando:

for /f tokens^=* %i in ('where /r . *')do @echo/ Path: %~dpi ^| Name: %~nxi

No arquivo bat / cmd:

@echo off 

for /f tokens^=* %%i in ('where /r . *')do echo/ Path: %%~dpi ^| Name: %%~nxi
  • Resultado:

 Path: G:\SO_en-EN\Q23228983\ | Name: file_0003.xlsx
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0001.txt
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0002.log
 Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0004.docx
 Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0005.csv
 Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0006.odt

Não fui eu
fonte
2

Windows 10:

  1. cmd aberto

  2. altere o diretório onde deseja criar o arquivo de texto (movie_list.txt) para a pasta (d: \ videos \ movies)

  3. digite o seguinte comando

    d: \ videos \ movies> dir / b / ad> movie_list.txt

nanthaa.ks
fonte
2

crie um arquivo em lote com o seguinte código:

dir %1 /b /a-d > list.txt

Em seguida, arraste e solte um diretório nele e os arquivos dentro do diretório serão listados em list.txt

Dennis
fonte
0

dir / s / d / a: -d "folderpath *. *"> arquivo.txt

E, perca o / s se você não precisa de arquivos de subpastas

Varun Chandurthi
fonte