Batch-Datei; Dateien im Verzeichnis auflisten, nur Dateinamen?

120

Dies ist wahrscheinlich eine sehr einfache Frage, aber ich habe Probleme damit. Grundsätzlich versuche ich, eine Batch-Datei zu schreiben, und ich brauche sie, um alle Dateien in einem bestimmten Verzeichnis aufzulisten. Der dirBefehl führt dies aus, gibt jedoch auch eine Reihe anderer Informationen aus. Ich möchte, dass NUR die Dateinamen aufgelistet und alles andere ausgeschlossen werden.

Ich möchte nur, dass die Ausgabe so aussieht:

file1.txt
file2.txt
file3.txt

Danke im Voraus!

user3558570
quelle
Mögliches Duplikat der Suppress-Verzeichnisnamen, die mit DIR
Helen am

Antworten:

235

Der vollständige Befehl lautet:

dir /b /a-d

Lass es mich auflösen;

Grundsätzlich /bist das, wonach Sie suchen.

/a-d schließt die Verzeichnisnamen aus.


Weitere Informationen finden Sie unter dir /?Weitere Argumente, die Sie mit dem dirBefehl verwenden können.

Stephan
quelle
8
Ist OK für mich :) dir /b /a-d > tmp.txt
Stéphane GRILLON
2
Es funktioniert auch nicht /S, um Dateinamen von Unterverzeichnissen abzurufen.
Farhan Ghumra
@xyroid hast du das gehört gelesen /a-d will the exclude directory names?
Stephan
4
Es ist nicht ausgeschlossen, wenn ich Namen von Dateien von Unterverzeichnissen drucken möchte.
Farhan Ghumra
Dies war sehr nahe an dem, was ich brauchte. Ich brauchte die absoluten Pfade und die Rekursion in Unterverzeichnisse. Hier ist, was ich verwendet habe:dir /B /A-D /S
EmpathicSage
33

Sie können dies auch versuchen:

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

Mithilfe einer forSchleife können Sie echoalle Dateinamen des aktuellen Verzeichnisses ausgeben.

So drucken Sie sie direkt von der Konsole aus:

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

Wenn Sie auch die Unterverzeichnisse benötigen, benötigen Sie einen "dir" -Befehl und einen "For" -Befehl

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

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

del list1.txt

Geben Sie Ihr Stammverzeichnis in den Befehl dir ein. Es wird eine list1.txt mit vollständigen Pfadnamen und dann eine list.txt mit nur den Dateinamen erstellt.

Mike_Gre
quelle
5

1.Öffnen Sie den Notizblock

2.Erstellen Sie eine neue Datei

3. Geben Sie die folgende Zeile ein

dir /b > fileslist.txt

4.Speichern " list.bat"

Das ist es. Jetzt können Sie diese " list.bat" Datei in einen beliebigen Ordner kopieren und einfügen und darauf doppelklicken. Daraufhin wird ein " fileslist.txt" zusammen mit diesem Verzeichnisordner und der Dateinamenliste erstellt.

Beispielausgabe: Geben Sie hier die Bildbeschreibung ein

Hinweis: Wenn Sie eine Dateinamenliste zusammen mit einem Unterordner erstellen möchten, können Sie eine Batchdatei mit dem folgenden Code erstellen.

dir /b /s > fileslist.txt
Premkumar Manipillai
quelle
2
Was ist, wenn die Ausgabedatei "fileslist.txt" nicht in die Liste aufgenommen werden soll?
Behnam
4
  • Warum nicht wherestattdessen verwenden dir?

In der Kommandozeile:

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

In bat / cmd-Datei:

@echo off 

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

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

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

Für rekursiv:

where /r . *
  • Ausgabe:

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
  • Für Schleife Pfad und Name abrufen:

  • In der Kommandozeile:
for /f tokens^=* %i in ('where .:*')do @echo/ Path: %~dpi ^| Name: %~nxi
  • In bat / cmd-Datei:
@echo off 

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

 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

  • Für Schleife Pfad und Name rekursiv abrufen:

In der Kommandozeile:

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

In bat / cmd-Datei:

@echo off 

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

 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

  • Einige weiterführende Literatur:

    [√] Wo

    [√] Wo Probe

Ich war es nicht
quelle
2

Windows 10:

  1. Öffnen Sie cmd

  2. Wechseln Sie in das Verzeichnis, in dem Sie eine Textdatei (movie_list.txt) für den Ordner (d: \ videos \ movies) erstellen möchten.

  3. Geben Sie den folgenden Befehl ein

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

nanthaa.ks
quelle
2

Erstellen Sie eine Batch-Datei mit dem folgenden Code:

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

Ziehen Sie dann ein Verzeichnis per Drag & Drop darauf, und die Dateien im Verzeichnis werden in list.txt aufgelistet

Dennis
quelle
0

dir / s / d / a: -d "Ordnerpfad *. *"> file.txt

Und verlieren Sie die / s, wenn Sie keine Dateien aus Unterordnern benötigen

Varun Chandurthi
quelle