BAT-Datei in mehreren Ordnern ausführen: Erfahren Sie Schritt für Schritt, wie Sie in Windows 11 und 10 Batch-Skripte für mehrere Verzeichnisse nutzen.

Sie möchten eine Batch-Datei automatisch in mehreren Ordnern ausführen, ohne jeden Pfad manuell aufzurufen? Das ist in Windows 10 und Windows 11 deutlich einfacher möglich, als viele vermuten.
Mit wenigen Zeilen Skriptcode durchläuft Ihre BAT-Datei beliebig viele Verzeichnisse – wahlweise rekursiv oder nur auf einer Ebene. Dieser Artikel zeigt Ihnen alle Methoden, erklärt Varianten und hilft bei typischen Fehlern.
Was ist eine BAT-Datei und wofür wird sie genutzt?
Eine BAT-Datei (auch Batch-Datei oder Batch-Skript genannt) ist eine Textdatei mit der Endung .bat, die eine Folge von Befehlen für die Windows-Eingabeaufforderung (cmd.exe) enthält. Beim Doppelklick oder Aufruf über die Kommandozeile führt Windows diese Befehle der Reihe nach aus – ähnlich wie ein kleines Programm.
Deshalb eignen sich BAT-Dateien hervorragend für wiederkehrende Aufgaben: zum Beispiel das Löschen temporärer Dateien in mehreren Ordnern, das Umbenennen von Dateien nach einem bestimmten Muster, das Kopieren oder Verschieben von Inhalten, das Starten von Programmen in bestimmten Verzeichnissen oder das automatische Erstellen von Backups. Außerdem lassen sie sich problemlos in der Aufgabenplanung von Windows einbinden, um regelmäßig zu laufen.
Grundprinzip: BAT-Datei in einem bestimmten Ordner ausführen
Bevor Sie eine BAT-Datei in mehreren Ordnern ausführen, ist es wichtig zu verstehen, in welchem Verzeichnis die Befehle tatsächlich ausgeführt werden. Standardmäßig startet ein Batch-Skript im Verzeichnis, aus dem es aufgerufen wurde – nicht zwingend in dem Ordner, in dem es selbst liegt.
Deshalb empfiehlt sich der Befehl cd /d "%~dp0" am Anfang jeder BAT-Datei. Dadurch wechselt das Skript zunächst in sein eigenes Verzeichnis. Zudem gibt %~dp0 den vollständigen Pfad zur BAT-Datei zurück – also Laufwerk plus Ordnerpfad.
@echo off
cd /d "%~dp0"
echo Skript läuft in: %CD%
pause
Zusätzlich können Sie mit dem Befehl cd /d "C:\IhrPfad" direkt in einen beliebigen Ordner wechseln, bevor weitere Aktionen stattfinden.
Methode 1: BAT-Datei in mehreren Ordnern mit einer FOR-Schleife ausführen
Die eleganteste und am häufigsten verwendete Methode ist die FOR-Schleife in der Windows-Eingabeaufforderung. Sie erlaubt es, eine Liste von Ordnern zu durchlaufen und in jedem Verzeichnis dieselben Befehle auszuführen.
Variante A: Feste Ordnerliste
Wenn Sie genau wissen, welche Ordner bearbeitet werden sollen, können Sie diese direkt im Skript angeben:
@echo off
for %%d in (
"C:\Ordner1"
"C:\Ordner2"
"D:\Projekte\Ordner3"
) do (
echo Verarbeite: %%d
cd /d %%d
rem Hier Ihre Befehle einfügen, z.B.:
dir /b *.txt
)
pause
Dabei steht %%d für die aktuelle Schleifenvariable – bei direktem Aufruf in der cmd.exe würde man stattdessen %d verwenden. Außerdem führen alle Anweisungen innerhalb der runden Klammern nach do die gewünschten Aktionen in jedem Ordner durch.
Variante B: Alle Unterordner eines Stammverzeichnisses automatisch durchlaufen
Noch praktischer ist es, wenn das Skript alle Unterordner eines bestimmten Stammverzeichnisses automatisch findet und durchläuft. Hierfür nutzen Sie den /D-Parameter der FOR-Schleife:
@echo off
set "STAMMORDNER=C:\MeineOrdner"
for /d %%d in ("%STAMMORDNER%\*") do (
echo Verarbeite: %%d
cd /d "%%d"
rem Hier Ihre Befehle einfügen
dir /b *.log
)
pause
Hierbei durchläuft das Skript automatisch alle direkten Unterordner von C:\MeineOrdner. Ebenso lässt sich der Stammordner über eine Variable (set "STAMMORDNER=...") leicht anpassen.
Methode 2: Rekursiv alle Unterordner durchlaufen mit /R
Wenn Sie nicht nur die direkte Unterebene, sondern alle tief verschachtelten Unterordner (also rekursiv) bearbeiten möchten, ergänzen Sie den Parameter /R:
@echo off
set "STAMMORDNER=C:\MeineOrdner"
for /R "%STAMMORDNER%" %%d in (.) do (
echo Aktueller Ordner: %%d
cd /d "%%~fd"
rem Beispiel: alle TXT-Dateien im Ordner auflisten
dir /b *.txt 2>nul
)
pause
Dabei steht %%~fd für den vollständigen, aufgelösten Pfad des aktuellen Verzeichnisses. Deshalb empfiehlt sich immer die Verwendung von %%~fd statt %%d, um Pfadprobleme mit Leerzeichen zu vermeiden.
Hinweis: Bei sehr tief verschachtelten Ordnerstrukturen kann ein rekursives Skript länger laufen. Testen Sie es daher zunächst mit einem kleinen Stammordner und fügen Sie
echo-Ausgaben ein, um den Fortschritt zu verfolgen.
Methode 3: Ordnerliste aus einer Textdatei einlesen
Wenn Sie häufig wechselnde Ordner verarbeiten möchten, ohne das Skript jedes Mal zu bearbeiten, empfiehlt sich das Einlesen der Pfade aus einer externen Textdatei. Erstellen Sie dazu eine Datei namens ordner.txt mit einem Pfad pro Zeile:
C:\Projekte\Projekt1
C:\Projekte\Projekt2
D:\Backups\Archiv2025
Das Batch-Skript liest diese Datei dann zeilenweise ein:
@echo off
set "LISTENDATEI=C:\Skripte\ordner.txt"
for /F "usebackq tokens=* delims=" %%d in ("%LISTENDATEI%") do (
echo Verarbeite: %%d
cd /d "%%d"
rem Hier Ihre Befehle einfügen
)
pause
Dabei ist usebackq wichtig, damit Pfade mit Leerzeichen korrekt verarbeitet werden. Außerdem sorgt tokens=* delims= dafür, dass die gesamte Zeile als ein Wert eingelesen wird – also kein unbeabsichtigtes Aufteilen bei Pfaden mit Sonderzeichen.
Methode 4: Übergabe von Ordnern als Argumente beim Skriptstart
Alternativ können Sie einer BAT-Datei beim Aufruf mehrere Ordner als Argumente übergeben. Das ist besonders nützlich, wenn Sie das Skript aus einem anderen Programm oder einem weiteren Batch-Skript heraus starten:
@echo off
rem Aufruf: meinskript.bat "C:\Ordner1" "C:\Ordner2" "D:\Ordner3"
:loop
if "%~1"=="" goto ende
echo Verarbeite: %~1
cd /d "%~1"
rem Hier Ihre Befehle einfügen
shift
goto loop
:ende
pause
Dabei verschiebt shift die Argumentliste um eine Position – deshalb verarbeitet das Skript nacheinander alle übergebenen Pfade. Zudem sorgt %~1 dafür, dass umgebende Anführungszeichen korrekt entfernt werden.
Methode 5: PowerShell als Alternative für komplexere Aufgaben
Für fortgeschrittene Anwendungsfälle empfiehlt sich PowerShell als leistungsfähige Alternative zu klassischen BAT-Dateien. PowerShell ist in Windows 10 und Windows 11 fest integriert und bietet deutlich mehr Möglichkeiten für die Verzeichnisverarbeitung.
Beispiel: BAT-Datei ruft PowerShell auf
Sie können aus einer BAT-Datei heraus einen PowerShell-Befehl ausführen:
@echo off
powershell -ExecutionPolicy Bypass -Command "Get-ChildItem -Path 'C:\MeineOrdner' -Directory | ForEach-Object { Set-Location $_.FullName; Write-Host 'Ordner:' $_.FullName; Get-ChildItem -Filter *.log }"
pause
Ebenso lässt sich ein separates PowerShell-Skript (.ps1) aus der BAT-Datei heraus starten:
@echo off
powershell -ExecutionPolicy Bypass -File "C:\Skripte\meineAufgabe.ps1"
pause
Somit kombinieren Sie die einfache Ausführbarkeit von BAT-Dateien mit der Leistungsfähigkeit von PowerShell. Jedoch sollten Sie beachten, dass die Ausführungsrichtlinie auf dem jeweiligen System den Start von PS1-Skripten einschränken kann.
Praktische Anwendungsbeispiele
Beispiel 1: Dateien in mehreren Ordnern löschen
Dieses Skript löscht alle .tmp-Dateien in einer Liste von Ordnern:
@echo off
for %%d in (
"C:\Windows\Temp"
"%LOCALAPPDATA%\Temp"
"C:\Projektordner\Cache"
) do (
if exist "%%d" (
echo Bereinige: %%d
del /Q /F "%%d\*.tmp" 2>nul
)
)
echo Fertig.
pause
Dabei prüft if exist "%%d" vorab, ob der Ordner überhaupt vorhanden ist – deshalb schlägt das Skript nicht fehl, wenn ein Verzeichnis fehlt.
Beispiel 2: Dateien aus mehreren Ordnern in einen Zielordner kopieren
@echo off
set "ZIEL=D:\Gesammelt"
if not exist "%ZIEL%" mkdir "%ZIEL%"
for /d %%d in ("C:\Quellordner\*") do (
echo Kopiere aus: %%d
xcopy /Y /Q "%%d\*.pdf" "%ZIEL%\" 2>nul
)
echo Alle PDFs kopiert.
pause
Außerdem erstellt mkdir "%ZIEL%" den Zielordner automatisch, falls er noch nicht existiert.
Beispiel 3: Programm in mehreren Verzeichnissen ausführen
Manchmal soll ein bestimmtes Programm – zum Beispiel ein Komprimierungstool oder ein Konverter – in jedem Unterordner ausgeführt werden:
@echo off
for /d %%d in ("C:\Projekte\*") do (
echo Verarbeite: %%d
cd /d "%%d"
"C:\Programme\MeinTool\tool.exe" --verarbeite .
)
pause
Wichtige Befehle und Variablen für BAT-Dateien mit Ordnern
Für die tägliche Arbeit mit Batch-Skripten und Verzeichnissen sind folgende Befehle und Variablen besonders nützlich:
cd /d "Pfad" – Wechselt das aktuelle Verzeichnis, auch laufwerksübergreifend. Ohne /d funktioniert der Wechsel zwischen verschiedenen Laufwerken nicht.
%CD% – Enthält das aktuell aktive Verzeichnis. Damit können Sie zur Kontrolle ausgeben, wo das Skript gerade arbeitet.
%~dp0 – Laufwerk und Pfad der BAT-Datei selbst. Deshalb ist diese Variable ideal, um relative Pfade vom Skript-Speicherort aus zu berechnen.
pushd / popd – Speichert das aktuelle Verzeichnis (pushd) und springt danach dorthin zurück (popd). Zusätzlich ermöglicht pushd auch das Einbinden von Netzwerkpfaden (\\Server\Freigabe) als temporäres Laufwerk.
if exist "Pfad" – Prüft vor dem Zugriff, ob ein Ordner oder eine Datei vorhanden ist. So vermeiden Sie Fehlermeldungen bei nicht existierenden Verzeichnissen.
2>nul – Unterdrückt Fehlermeldungen der Standardfehlerausgabe. Ebenso können Sie mit >nul auch die normale Ausgabe unterdrücken.
Häufige Fehler und ihre Lösung
Problem: Pfade mit Leerzeichen funktionieren nicht
Einer der häufigsten Fehler bei BAT-Dateien ist das fehlende Setzen von Anführungszeichen bei Pfaden, die Leerzeichen enthalten. Deshalb sollten Sie immer Pfade in doppelten Anführungszeichen schreiben: cd /d "C:\Mein Ordner mit Leerzeichen".
Problem: Schleifenvariable wird außerhalb der Klammer leer
Innerhalb eines for-Blocks mit Klammern werden Variablenwerte, die mit set geändert werden, nicht sofort sichtbar, da der Block vorab geparst wird. Lösung: Aktivieren Sie Delayed Expansion mit setlocal enabledelayedexpansion und verwenden Sie !Variable! statt %Variable%:
@echo off
setlocal enabledelayedexpansion
for /d %%d in ("C:\Ordner\*") do (
set "AKTUELL=%%d"
echo Aktuell: !AKTUELL!
)
Problem: Skript ändert Verzeichnis, kehrt aber nicht zurück
Wenn Sie innerhalb einer Schleife cd verwenden, bleibt das Skript im letzten Verzeichnis. Verwenden Sie stattdessen pushd / popd:
@echo off
for /d %%d in ("C:\Ordner\*") do (
pushd "%%d"
rem Befehle hier
popd
)
pause
Problem: BAT-Datei findet keine Unterordner
Prüfen Sie, ob das Stammverzeichnis korrekt angegeben ist und ob tatsächlich Unterordner vorhanden sind. Außerdem kann ein Tippfehler im Pfad dazu führen, dass die Schleife einfach übersprungen wird – ohne Fehlermeldung.
BAT-Datei in der Aufgabenplanung für mehrere Ordner einrichten
Wenn Ihre BAT-Datei automatisch und regelmäßig mehrere Ordner verarbeiten soll, empfiehlt sich die Aufgabenplanung von Windows (Task Scheduler). So richten Sie einen automatischen Start ein:
Öffnen Sie zunächst die Aufgabenplanung über das Startmenü (Suche nach „Aufgabenplanung“). Wählen Sie dann „Einfache Aufgabe erstellen“ und vergeben Sie einen Namen. Legen Sie anschließend den Trigger fest – zum Beispiel täglich um 23 Uhr. Wählen Sie als Aktion „Programm starten“ und geben Sie den vollständigen Pfad zur BAT-Datei an, etwa C:\Skripte\meinskript.bat. Tragen Sie außerdem im Feld „Starten in“ den Ordner ein, in dem das Skript liegt, damit relative Pfade korrekt aufgelöst werden.
Empfehlung: Aktivieren Sie in den erweiterten Einstellungen der Aufgabe die Option „Mit höchsten Berechtigungen ausführen“, wenn das Skript auf geschützte Ordner wie
C:\Windowszugreifen soll.
BAT-Datei vs. PowerShell: Was empfiehlt sich wann?
Für einfache Aufgaben wie das Durchlaufen von Ordnern und das Ausführen weniger Befehle sind BAT-Dateien die einfachere Wahl – sie laufen auf jedem Windows-System ohne zusätzliche Konfiguration. Jedoch stoßen sie bei komplexerer Logik, Fehlerbehandlung oder der Verarbeitung vieler Dateitypen schnell an ihre Grenzen.
Deshalb empfiehlt sich PowerShell für fortgeschrittene Automatisierungen, da es objektorientiert arbeitet, umfangreiche Fehlerbehandlung bietet und auch Remote-Systeme ansprechen kann. Ebenso lassen sich beide Welten kombinieren: Die BAT-Datei dient als Einstiegspunkt und startet bei Bedarf ein PowerShell-Skript.
BAT-Datei debuggen: Fehler gezielt finden
Beim Entwickeln von Batch-Skripten, die mehrere Ordner durchlaufen, sind folgende Debugging-Methoden hilfreich:
Entfernen Sie zunächst das @echo off am Anfang des Skripts – dadurch wird jeder Befehl vor seiner Ausführung in der Konsole angezeigt. Zusätzlich können Sie nach kritischen Befehlen echo Fehlercode: %ERRORLEVEL% einfügen, um zu prüfen, ob ein Befehl erfolgreich war (Rückgabewert 0) oder einen Fehler erzeugt hat (Rückgabewert ungleich 0). Außerdem eignet sich ein temporäres pause nach jedem Schleifendurchlauf, um den aktuellen Zustand zu überprüfen, bevor das Skript weiterläuft.
Sicherheit beim Ausführen von BAT-Dateien
BAT-Dateien sind mächtige Werkzeuge – deshalb sollten Sie grundlegende Sicherheitsregeln beachten. Führen Sie niemals BAT-Dateien aus unbekannten Quellen mit Administratorrechten aus. Prüfen Sie den Inhalt einer heruntergeladenen BAT-Datei stets in einem Texteditor – empfehlenswert ist Notepad++ (kostenlos, mit Syntaxhervorhebung), da er Fehler durch Einfärbung sichtbar macht. Außerdem empfiehlt sich das Testen neuer Skripte zunächst in einem Testordner mit unkritischen Daten.
Ebenso sollten Sie bei Skripten, die Dateien löschen oder überschreiben, eine Sicherheitsabfrage einbauen:
@echo off
set /p BESTAETIGUNG=Wirklich fortfahren? (J/N):
if /i not "%BESTAETIGUNG%"=="J" (
echo Abgebrochen.
exit /b
)
