Wie iteriert man über jede Datei in einem Verzeichnis mit einer .bat- oder .cmd-Datei?
Geben Sie der Einfachheit halber eine Antwort an, die nur den Dateinamen oder den Dateipfad wiedergibt.
Befehlszeilenverwendung:
for /f %f in ('dir /b c:\') do echo %f
Verwendung von Batchdateien:
for /f %%f in ('dir /b c:\') do echo %%f
Update : Wenn das Verzeichnis Dateien mit Leerzeichen in den Namen enthält, müssen Sie das vom for /f
Befehl verwendete Trennzeichen ändern . Sie können beispielsweise das Pipe-Zeichen verwenden.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Update 2 : (schnell anderthalb Jahre nach der ursprünglichen Antwort :-)) Wenn der Verzeichnisname selbst ein Leerzeichen im Namen enthält, können Sie die usebackq
Option auf for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
Wenn Sie die Ausgabeumleitung oder die Befehlsleitung verwenden müssen, verwenden Sie das Escapezeichen char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
nach dem benötigtfor
? Gemäß den Hilfedokumenten wird das/f
Flag geöffnet und jede Datei gelesen. Wird das benötigt, um Dateien zu wiederholen oder umzubenennen?/f
AfterFOR
beschränkt es auf Dateien. In ähnlicher Weise/d
einengt auf Verzeichnisse (Ordner) und/r
instruiert es rekursiv sein.'dir /b "c:\program files"'
`dir /b "c:\program files"`
Alternativ können Sie Folgendes verwenden:
Der Befehl forfiles ist in Windows Vista und höher verfügbar.
quelle
Einfachste Methode:
Verwenden Sie in der Befehlszeile:
Aus einer Batch-Datei (verdoppeln Sie die Prozentzeichen):
Aus einer Batch-Datei mit dem als 1. Parameter angegebenen Ordner:
quelle
dir /B
Ausgabe mitfor
.Verwenden
mit:
quelle
%%var was unexpected at this time.
Können Sie ein genaues Beispiel geben? Ich habe eine Reihe von Variationen vonfor /r . %%var in (*.*) do echo %%var
Ein anderer Weg:
quelle
"%~nf"
steht für den Namen der Datei ohne Erweiterung, wobeif
der Name der teilweise angegebenen Variablen istfor
. Docs: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…Ich hatte Malware, die alle Dateien in einem Verzeichnis als versteckt / system / schreibgeschützt markierte. Wenn sich jemand in dieser Situation befindet, CD in das Verzeichnis und ausführen
for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.quelle