Wie kann ich über jede Datei in einem Verzeichnis iterieren, indem ich eine for
Schleife?
Und wie kann ich feststellen, ob es sich bei einem bestimmten Eintrag um ein Verzeichnis oder nur um eine Datei handelt?
Wie kann ich über jede Datei in einem Verzeichnis iterieren, indem ich eine for
Schleife?
Und wie kann ich feststellen, ob es sich bei einem bestimmten Eintrag um ein Verzeichnis oder nur um eine Datei handelt?
Ich verwende den Befehl xcopy mit der Option /L, um die Dateinamen zu erhalten. Wenn Sie also entweder ein Verzeichnis oder alle Dateien in einem Unterverzeichnis abrufen wollen, könnten Sie so vorgehen:
for /f "delims=" %%a IN ('xcopy "D:\*.pdf" c:\ /l') do echo %%a
Ich verwende einfach c:\ als Ziel, weil es auf Windows-Systemen immer vorhanden ist und nicht kopiert wird, so dass es keine Rolle spielt. Wenn Sie auch die Unterverzeichnisse wollen, verwenden Sie einfach die Option /s am Ende. Sie können auch die anderen Schalter von xcopy verwenden, wenn Sie sie aus anderen Gründen benötigen.
Sie könnte auch die für Dateien Befehl:
forfiles /s
und prüfen Sie auch, ob es sich um ein Verzeichnis handelt
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"
Probieren Sie dies, um zu prüfen, ob eine Datei ein Verzeichnis ist:
FOR /F "delims=" %I IN ('DIR /B /AD "filename" 2^>^&1 ^>NUL') DO IF "%I" == "File Not Found" ECHO Not a directory
Dies sagt Ihnen nur, ob eine Datei KEIN Verzeichnis ist, was auch dann der Fall ist, wenn die Datei nicht existiert, also überprüfen Sie das bei Bedarf zuerst. Die Carets (^) werden verwendet, um die Umleitungssymbole zu umgehen, und die Ausgabe der Dateiliste wird auf NUL umgeleitet, um zu verhindern, dass sie angezeigt wird, während die Fehlerausgabe der DIR-Liste auf die Ausgabe umgeleitet wird, damit Sie gegen die DIR-Meldung "Datei nicht gefunden" testen können.
Versuchen Sie dies:
::Example directory
set SetupDir=C:\Users
::Loop in the folder with "/r" to search in recursive folders, %%f being a loop ::variable
for /r "%SetupDir%" %%f in (*.msi *.exe) do set /a counter+=1
echo there are %counter% files in your folder
Es zählt die .msi und .exe Dateien in Ihrem Verzeichnis (und im Unterverzeichnis). Es macht also auch einen Unterschied zwischen Ordnern und Dateien als ausführbare Dateien.
Fügen Sie einfach eine Erweiterung hinzu (.pptx .docx ), wenn Sie andere Dateien in der Schleife filtern müssen
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.