Fichier batch; Liste des fichiers dans le répertoire, uniquement les noms de fichiers?

120

C'est probablement une question très simple, mais j'ai du mal avec elle. Fondamentalement, j'essaie d'écrire un fichier batch et j'en ai besoin pour lister tous les fichiers dans un certain répertoire. La dircommande le fera, mais elle donne également un tas d'autres informations; Je veux qu'il répertorie UNIQUEMENT les noms de fichiers et exclut toute autre chose.

Je veux juste que la sortie ressemble à ceci:

file1.txt
file2.txt
file3.txt

Merci d'avance!

user3558570
la source

Réponses:

236

La commande complète est:

dir /b /a-d

Laissez-moi rompre;

En gros, /bc'est ce que vous recherchez.

/a-d exclura les noms de répertoire.


Pour plus d'informations, consultez les dir /?autres arguments que vous pouvez utiliser avec la dircommande.

Stephan
la source
8
Is OK for me :) dir /b /a-d > tmp.txt
Stéphane GRILLON
2
Cela ne fonctionne pas avec /Spour obtenir les noms de fichiers des sous-répertoires également.
Farhan Ghumra
@xyroid avez-vous lu le seltene /a-d will the exclude directory names?
Stephan
4
Cela n'exclut pas si je veux imprimer les noms des fichiers des sous-répertoires.
Farhan Ghumra
C'était très proche de ce dont j'avais besoin. J'avais besoin des chemins absolus et de la récursivité dans les sous-répertoires. Voici ce que j'ai utilisé:dir /B /A-D /S
EmpathicSage
34

Vous pouvez également essayer ceci:

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

En utilisant une forboucle, vous pouvez echosortir tous les noms de fichiers du répertoire courant.

Pour les imprimer directement depuis la console:

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

Si vous avez également besoin des sous-répertoires, vous avez besoin d'une commande "dir" et d'une commande "For"

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

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

del list1.txt

mettez votre répertoire racine dans la commande dir. Il créera un list1.txt avec les noms de chemin complets, puis un list.txt avec uniquement les noms de fichiers.

Mike_Gre
la source
5

1.Ouvrir le bloc-notes

2.Créez un nouveau fichier

3. tapez la ligne ci-dessous

dir /b > fileslist.txt

4.Enregistrer " list.bat"

C'est tout. maintenant vous pouvez copier et coller ce list.batfichier " " à n'importe quel emplacement de votre dossier et double-cliquer dessus, il créera un " fileslist.txt" avec ce dossier de répertoire et cette liste de noms de fichiers.

Exemple de sortie: entrez la description de l'image ici

Remarque: Si vous souhaitez créer une liste de noms de fichiers avec un sous-dossier, vous pouvez créer un fichier de commandes avec le code ci-dessous.

dir /b /s > fileslist.txt
Premkumar Manipillai
la source
2
Que faire si je ne souhaite pas que le fichier de sortie "fileslist.txt" soit inclus dans la liste?
Behnam
4
  • Pourquoi ne pas utiliser à la whereplace dir?

En ligne de commande:

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

Dans le fichier bat / cmd:

@echo off 

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

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

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

Pour récursivement:

where /r . *
  • Production:

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
  • Pour la boucle, obtenez le chemin et le nom:

  • En ligne de commande:
for /f tokens^=* %i in ('where .:*')do @echo/ Path: %~dpi ^| Name: %~nxi
  • Dans le fichier bat / cmd:
@echo off 

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

 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

  • Pour la boucle, obtenez le chemin et le nom de manière récursive:

En ligne de commande:

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

Dans le fichier bat / cmd:

@echo off 

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

 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

Ce n'était pas moi
la source
2

Windows 10:

  1. ouvrir cmd

  2. changer de répertoire dans lequel vous souhaitez créer le fichier texte (movie_list.txt) pour le dossier (d: \ videos \ movies)

  3. tapez la commande suivante

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

nanthaa.ks
la source
2

créez un fichier de commandes avec le code suivant:

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

Ensuite, faites glisser et déposez un répertoire dessus et les fichiers à l'intérieur du répertoire seront répertoriés dans list.txt

Dennis
la source
0

dir / s / d / a: -d "chemin du dossier *. *"> fichier.txt

Et, perdez le / s si vous n'avez pas besoin de fichiers des sous-dossiers

Varun Chandurthi
la source