
Ich habe einen Dir-Befehl, mit dem ich eine Textliste eines Dateiverzeichnisses erstelle: „dir /a /b /-p /o:gen > z-file_list.txt“
Weiß jemand, wie ich das ändern kann, sodass die Textliste keine Erweiterungen enthält? Also nur den Dateinamen?
Dank im Voraus!
- BEARBEITEN -
Entschuldigen Sie, ich habe mich nicht klar ausgedrückt. Ich meine, dass sein Befehl eine txt-Datei mit einer Dateiliste des Verzeichnisinhalts speichert.
Die Textdatei sieht folgendermaßen aus:
Dateiname.ext
Dateiname.ext
Dateiname.ext
Dateiname.ext
Ich versuche herauszufinden, wie ich die Textdatei so aussehen lassen kann.
Dateiname
Dateiname
Dateiname
Dateiname
Danke. Entschuldigung, ich habe mich unklar ausgedrückt.
Antwort1
Der dir
Befehl verfügt weder über einen Schalter noch über die Option zum Löschen von Erweiterungen.
dir /b
Dies kann jedoch durch die Verarbeitung der Ausgabe in einer Schleife erfolgen for /f
.
(del list.txt 2>nul) & for /f %f in ('dir /a /b /o:gen') do @echo %~nf >>list.txt
Wenn Sie sich nicht um Unterverzeichnisse oder System-/versteckte Dateien kümmern (was ja der Zweck ist dir /a
), dann würde auch ein einfaches Verzeichnis for
funktionieren.
(del list.txt 2>nul) & for %f in (*) do @echo %~nf >>list.txt
Führen Sie es aus dir /?
, del /?
und for /?
erfahren Sie mehr über die Syntax und die Schalter.
Antwort2
Sie können dies von der CMD-Eingabeaufforderung aus tun, indem Sie mit Powershell ein wenig schummeln. Geben Sie in der Eingabeaufforderung Folgendes ein:
powershell -command "dir |select basename" > file_list.txt
Wie gesagt, das ist ein bisschen geschummelt, da powershell -command
die Powershell-Shell aufgerufen wird, um das Powershell-Skript auszuführen dir |select basename"
. Zu Ihrer Information: dir
In Powershell ist dies nur ein Alias für den Befehl get-childitem
und hat nichts mit dem Befehl der CMD-Eingabeaufforderung zu tun dir
. Powershell führt das Skript aus und die Ergebnisse werden an die CMD-Eingabeaufforderung zurückgegeben und >
in die Textdatei umgeleitet ().