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!


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.


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

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.


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

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


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


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


0

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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.