Wie liste ich rekursiv (nur) Dateinamen unter DOS / Windows auf? [Duplikat]

20

Mögliches Duplikat:
Ruft rekursiv leere Dateinamen in der Eingabeaufforderung ab

Ich möchte alle Dateien in einem Verzeichnis rekursiv auflisten und nur die Dateinamen anzeigen (ohne Erweiterungen und ohne die vollständigen Pfade). Ich benutze Windows / DOS.

Das nächste, mit dem ich etwas anfangen konnte, dirwar dir /s /b, aber es listet vollständige Pfade auf und zeigt auch die Erweiterungen an.

Nun, vielleicht könnte ich mit den Erweiterungen leben, aber ich muss die Pfade loswerden!

Irgendwelche Ideen?

David B
quelle
1
Welche Windows-Version?
OldWolf
@OldWolf: XP. Ich bevorzuge keine Software von Drittanbietern /
David B

Antworten:

28
cd /d C:\Path\To\Source\Folder
for /r %i in (*) do @echo %~ni

Wenn Sie die Liste in einer Datei speichern möchten, hängen Sie sie >> C:\Path\To\list_file.txtan das Ende des forBefehls an.

Wenn Sie die Erweiterungen benötigen, wechseln Sie %~nizu%~nxi

Ändern Sie zur Verwendung in einer Stapeldatei alle %in%%

afrazier
quelle
6
Wenn Sie Pfad, Name und Erweiterung benötigen, ändern Sie% ~ ni in% ~ pnxi
Deep
Dies funktioniert, zeigt aber keine versteckten Dateien an. Wie kann ich auch die versteckten Dateien sehen?
ala
@ala: Wenn Sie versteckte Dateien anzeigen möchten, müssen Sie so etwas wie die Antwort von David Remy nur mit den entsprechenden Flags verwenden, die an den dirBefehl übergeben werden.
afrazier
7

Wenn Sie bereit sind, Powershell zu laden, sollte dieser Befehl dies tun.

get-childitem "d:\acc" -recurse|foreach {$_.Basename}
uSlackr
quelle
5

Wenn Sie etwas wie das Folgende tun, erhalten Sie das, was Sie wollen:

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

Leiten Sie die Ausgabe einfach in eine Datei und verwenden Sie sie von dort aus, falls erforderlich.

David Remy
quelle
3

Sie wissen nicht, ob Sie es für eine Software eines Drittanbieters halten oder nicht, da es von Microsoft stammt und mit 7 ausgeliefert wird, aber Powershell wird den größten Teil Ihres Problems ziemlich leicht lösen. Wenn Sie es noch nicht installiert haben, steht es auf der Microsoft-Website für XP zur Verfügung.

Get-ChildItem -path "C:\Program Files\" -recurse | foreach ($_) {
    write $_.name
}
OldWolf
quelle