Batch Grundkurs 003: Dateilisten erstellen und in die Zwischenablage kopieren
Worum geht es in diesem Teil?
In diesem dritten Teil des Batch-Grundkurses erstellen wir Dateilisten und Pfadlisten mit Batchdateien.
Das ist im Alltag sehr praktisch, wenn man schnell eine Übersicht über Dateien, Ordner oder komplette Ordnerstrukturen benötigt. Solche Listen kann man zum Beispiel für Dokumentationen, Projektübersichten, Support-Anfragen, E-Mails, Webseiten, ChatGPT-Abfragen oder interne Arbeitsabläufe verwenden.
In diesem Teil gibt es mehrere Varianten:
- eine einfache Dateiliste des aktuellen Ordners als Textdatei
- eine Dateiliste des aktuellen Ordners als Textdatei und zusätzlich in der Zwischenablage
- eine SendTo-Variante für die Namen markierter Dateien und Ordner
- eine SendTo-Variante für die vollständigen Pfade markierter Dateien und Ordner
- eine SendTo-Variante für eine rekursive Dateiliste als Textdatei
- eine SendTo-Variante für rekursive relative Pfade in der Zwischenablage
- eine SendTo-Variante für rekursive absolute Pfade in der Zwischenablage
Warum ist dieses Beispiel praktisch?
Eine Dateiliste klingt zunächst einfach, ist aber im Alltag extrem nützlich. Man kann damit sehr schnell dokumentieren, welche Dateien in einem Ordner liegen oder welche Dateien und Ordner im Explorer markiert wurden.
Beispiele für typische Anwendungsfälle:
Dateinamen für eine Dokumentation sammeln
Pfade für eine E-Mail oder einen Chat kopieren
Ordnerstrukturen für Support oder Tutorials ausgeben
rekursive Dateilisten für Projektordner erstellen
Dateien für spätere Verarbeitung vorbereiten
Ordnerinhalte mit ChatGPT besprechen
Dateistrukturen für Webseiten oder Kursmaterial dokumentieren
Gerade die Clipboard-Varianten sind sehr praktisch, weil man die Ausgabe direkt in ein anderes Programm einfügen kann, ohne erst eine Textdatei öffnen zu müssen.

Browseransicht und erstellte Dateiliste
Hinweis zur Kursreihe
Dieses Skript-Paket ist Teil einer größeren Vergleichsreihe. Die Aufgabe wird zuerst mit Batch umgesetzt. Später folgen passende Varianten mit PowerShell 7 und Python, damit man die unterschiedlichen Lösungswege direkt miteinander vergleichen kann.
Batch = einfacher Einstieg mit Windows-Bordmitteln
PowerShell 7 = moderner und leistungsfähiger für Windows-Automatisierung
Python = sehr flexibel und auch für größere Tools geeignet
Downloads zu diesem Teil
Für diesen Teil gibt es zwei Downloads: die Batchdateien für diesen Kursteil und die gemeinsame Testumgebung für die Windows-Automatisierung.
Batchdateien für Teil 003:
Download Batch Grundkurs: 003_Dateiliste_erstellen als ZIP Datei
Entpacken nach:
C:\TOPTORIALS_CODE\000_Batch_Grundkurs
Falls der Ordner noch nicht existiert, lege ihn vorher im Explorer an. Nach dem Entpacken entsteht dort automatisch:
C:\TOPTORIALS_CODE\000_Batch_Grundkurs\003_Dateiliste_erstellen
Testumgebung für Windows-Automatisierung:
Download TOPTORIALS_Testdaten_Windows_Automatisierung_V001.zip
Entpacken nach:
C:\TOPTORIALS_CODE\1000_TESTBEREICH
Für den Batch-Grundkurs benenne den entpackten Ordner anschließend um in:
TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001
Testumgebung zum Mitmachen
Für diese Tutorialreihe gibt es eine vorbereitete Testumgebung. Damit kannst du die Batchdateien gefahrlos ausprobieren, ohne eigene wichtige Dateien verwenden zu müssen.
Die Testumgebung ist sprachübergreifend aufgebaut. Das bedeutet: Die gleiche Grundstruktur kann später auch für die passenden PowerShell-7- und Python-Versionen verwendet werden. Dadurch lassen sich die unterschiedlichen Lösungen besser miteinander vergleichen.
Empfohlener Speicherort für die ZIP-Datei:
C:\TOPTORIALS_CODE\1000_TESTBEREICH
Wenn du die ZIP-Datei dort entpackst, entsteht zunächst dieser Ordner:
C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_V001
Für den Batch-Grundkurs benennen wir diesen entpackten Ordner um in:
TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001
Danach sieht der Pfad zum Testdatenordner für den Batch-Grundkurs zum Beispiel so aus:
C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001
Für diesen Teil verwendest du dann den passenden Unterordner:
C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\003_Dateiliste_erstellen
Du musst die Testumgebung aber nicht verwenden. Die Batchdateien funktionieren auch mit eigenen Ordnern. Wichtig ist nur, dass du zuerst mit Testordnern arbeitest und nicht direkt mit wichtigen Originaldateien.
Sicherheitshinweis
Wichtiger Hinweis:
Die Skripte werden auf eigene Verantwortung verwendet. Teste jedes Skript zuerst in einem separaten Testordner und niemals direkt mit wichtigen Originaldateien. Einige spätere Skripte können Dateien umbenennen, verschieben oder neue Dateien und Ordner erstellen. Lies die Hinweise auf der jeweiligen Seite sorgfältig durch und verwende zuerst immer den Testmodus, wenn ein Skript eine _test-Version enthält.
Dieses dritte Skript-Paket ist noch relativ ungefährlich, weil keine vorhandenen Dateien umbenannt, verschoben oder gelöscht werden. Einige Varianten erstellen allerdings eine Textdatei namens dateiliste.txt oder dateiliste_rekursiv.txt. Wenn eine solche Datei bereits existiert, kann sie durch die neue Ausgabe ersetzt werden.
Enthaltene Skripte
Zu diesem Teil gehören sieben Batchdateien:
03_dateiliste_erstellen.bat
03_dateiliste_erstellen_in_clipboard.bat
003_sendto_markierte_elemente_namen_in_clipboard.bat
003_sendto_markierte_elemente_pfade_in_clipboard.bat
003_sendto_ordner_rekursiv_als_txt.bat
003_sendto_ordner_rekursiv_relative_pfade_in_clipboard.bat
003_sendto_ordner_rekursiv_absolute_pfade_in_clipboard.bat
Variante 1: Einfache Dateiliste als Textdatei
Die erste Variante erstellt eine einfache Dateiliste des aktuellen Ordners.
Die Datei heißt:
03_dateiliste_erstellen.bat
Diese Batchdatei wird direkt in den Ordner kopiert, dessen Dateien aufgelistet werden sollen. Beim Start wird die Datei dateiliste.txt erstellt.
Wenn du die vorbereitete Testumgebung verwendest, kannst du diese Variante zum Beispiel in einem passenden Unterordner von Teil 003 testen:
C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\003_Dateiliste_erstellen
Der komplette Code der einfachen Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 03_dateiliste_erstellen.bat
REM Beschreibung: Erstellt eine Dateiliste des aktuellen Ordners als Textdatei.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM ============================================================
echo.
:: Ändert die Codepage auf UTF-8
chcp 65001 >nul
::Ändert die Codepage auf Windows-1252 (ANSI)
::chcp 1252 >nul
echo Dateiliste wird erstellt...
echo.
dir /b /a-d > dateiliste.txt
echo Fertig.
echo Die Datei dateiliste.txt wurde erstellt.
echo.
pause
Code der einfachen Variante erklärt
@echo off
@echo off
Diese Zeile sorgt dafür, dass die Befehle selbst nicht im Fenster angezeigt werden. Dadurch bleibt die Ausgabe im Konsolenfenster übersichtlicher.
Kommentarblock mit REM
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 03_dateiliste_erstellen.bat
REM Beschreibung: Erstellt eine Dateiliste des aktuellen Ordners als Textdatei.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM ============================================================
Der Kommentarblock beschreibt das Skript. Er wird nicht ausgeführt, sondern dient nur zur Information.
chcp 65001 >nul
chcp 65001 >nul
Mit chcp wird die Codepage der Eingabeaufforderung geändert. 65001 steht für UTF-8. Das kann bei Umlauten und Sonderzeichen hilfreich sein.
Das >nul unterdrückt die normale Ausgabe des Befehls im Fenster.
Dateiliste erstellen
dir /b /a-d > dateiliste.txt
Das ist die wichtigste Zeile dieser Variante.
dir listet den Inhalt eines Ordners auf.
Die Option /b steht für eine einfache Ausgabe ohne zusätzliche Informationen. Es werden also nur die Namen ausgegeben.
Die Option /a-d sorgt dafür, dass nur Dateien aufgelistet werden. Ordner werden dabei ausgeschlossen.
Das Zeichen > leitet die Ausgabe in eine Datei um. In diesem Fall wird die Ausgabe in die Datei dateiliste.txt geschrieben.
Das bedeutet:
Liste alle Dateien im aktuellen Ordner auf
und schreibe diese Liste in dateiliste.txt.
Fertigmeldung und Pause
echo Fertig.
echo Die Datei dateiliste.txt wurde erstellt.
echo.
pause
Diese Zeilen zeigen an, dass das Skript abgeschlossen ist. pause sorgt dafür, dass das Fenster offen bleibt, bis eine Taste gedrückt wird.
Variante 2: Dateiliste als Textdatei und zusätzlich in die Zwischenablage
Die zweite Variante erstellt ebenfalls eine Datei dateiliste.txt, kopiert den Inhalt aber zusätzlich in die Zwischenablage.
Dadurch kann man die Dateiliste sofort in ein anderes Programm einfügen, zum Beispiel in einen Texteditor, ein Dokument, eine E-Mail oder einen Chat.
Der komplette Code der Clipboard-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 03_dateiliste_erstellen_in_clipboard.bat
REM Beschreibung: Erstellt eine Dateiliste und kopiert sie zusaetzlich in die Zwischenablage.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM ============================================================
echo.
:: Ändert die Codepage auf UTF-8
chcp 65001 >nul
::Ändert die Codepage auf Windows-1252 (ANSI)
::chcp 1252 >nul
echo Dateiliste wird erstellt...
echo.
dir /b /a-d > dateiliste.txt
type dateiliste.txt | clip
echo Fertig.
echo Die Datei dateiliste.txt wurde erstellt.
echo Der Inhalt wurde zusaetzlich in die Zwischenablage kopiert.
echo.
pause
Code der Clipboard-Variante erklärt
Der größte Teil dieser Variante ist identisch mit der einfachen Version. Neu ist diese Zeile:
type dateiliste.txt | clip
type gibt den Inhalt einer Textdatei aus.
Mit dem senkrechten Strich | wird diese Ausgabe an einen weiteren Befehl weitergegeben. Das nennt man Pipe.
clip übernimmt die Ausgabe und kopiert sie in die Windows-Zwischenablage.
Die Zeile bedeutet also:
Lies den Inhalt von dateiliste.txt
und kopiere ihn in die Zwischenablage.
Variante 3: Namen markierter Elemente in die Zwischenablage kopieren
Diese Variante ist für das Windows-Menü Senden an gedacht.
Die Datei heißt:
003_sendto_markierte_elemente_namen_in_clipboard.bat
Damit kann man im Explorer mehrere Dateien oder Ordner markieren und deren Namen in die Zwischenablage kopieren.
Es werden nur die Namen kopiert, nicht die kompletten Pfade.
Beispielausgabe:
rechnung.pdf
bilder
notiz.txt
Der komplette Code dieser Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 003_sendto_markierte_elemente_namen_in_clipboard.bat
REM Beschreibung: Kopiert die Namen markierter Dateien und Ordner in die Zwischenablage.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM
REM Hinweis:
REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
REM ============================================================
echo.
:: Behebt das Umlautproblem (für ANSI/Windows-1252 codierte Skripte)
chcp 1252 >nul
if "%~1"=="" (
echo Bitte markiere Dateien oder Ordner und sende sie an dieses Skript.
echo.
pause
exit /b
)
set "AUSGABE=%temp%\toptorials_markierte_elemente.txt"
if exist "%AUSGABE%" del "%AUSGABE%"
:loop
if "%~1"=="" goto fertig
echo %~nx1>>"%AUSGABE%"
shift
goto loop
:fertig
type "%AUSGABE%" | clip
echo Fertig.
echo Die Namen der markierten Elemente wurden in die Zwischenablage kopiert.
echo.
pause
Code der Namen-SendTo-Variante erklärt
Prüfen, ob etwas übergeben wurde
if "%~1"=="" (
echo Bitte markiere Dateien oder Ordner und sende sie an dieses Skript.
echo.
pause
exit /b
)
%~1 steht für das erste übergebene Element. Wenn nichts übergeben wurde, zeigt das Skript einen Hinweis an und beendet sich.
Temporäre Ausgabedatei festlegen
set "AUSGABE=%temp%\toptorials_markierte_elemente.txt"
Hier wird der Pfad zu einer temporären Ausgabedatei festgelegt.
%temp% ist der temporäre Ordner des aktuellen Windows-Benutzers. Dort kann das Skript kurz eine Hilfsdatei erstellen.
Alte temporäre Datei löschen
if exist "%AUSGABE%" del "%AUSGABE%"
Falls die temporäre Datei bereits vorhanden ist, wird sie zuerst gelöscht. Dadurch startet das Skript mit einer leeren Ausgabedatei.
Schleife über alle übergebenen Elemente
:loop
if "%~1"=="" goto fertig
echo %~nx1>>"%AUSGABE%"
shift
goto loop
Dieser Bereich ist eine einfache Schleife.
%~nx1 gibt nur den Namen und die Erweiterung des aktuellen Elements aus. Der Pfad wird dabei weggelassen.
>> hängt die Ausgabe an die Datei an. Dadurch wird nicht jedes Mal überschrieben, sondern jede neue Zeile ergänzt.
shift verschiebt die Parameter weiter. Aus dem zweiten übergebenen Element wird dadurch das neue erste Element.
So kann das Skript alle markierten Dateien und Ordner nacheinander verarbeiten.
In die Zwischenablage kopieren
type "%AUSGABE%" | clip
Der Inhalt der temporären Ausgabedatei wird gelesen und in die Zwischenablage kopiert.
Variante 4: Pfade markierter Elemente in die Zwischenablage kopieren
Diese Variante arbeitet ähnlich wie die Namen-Variante. Sie kopiert aber nicht nur die Namen, sondern die vollständigen Pfade der markierten Dateien und Ordner.
Die Datei heißt:
003_sendto_markierte_elemente_pfade_in_clipboard.bat
Beispielausgabe:
C:\Beispiele\rechnung.pdf
C:\Beispiele\bilder
C:\Beispiele\notiz.txt
Der komplette Code dieser Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 003_sendto_markierte_elemente_pfade_in_clipboard.bat
REM Beschreibung: Kopiert die vollstaendigen Pfade markierter Dateien und Ordner in die Zwischenablage.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM
REM Hinweis:
REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
REM ============================================================
echo.
:: Behebt das Umlautproblem (für ANSI/Windows-1252 codierte Skripte)
chcp 1252 >nul
if "%~1"=="" (
echo Bitte markiere Dateien oder Ordner und sende sie an dieses Skript.
echo.
pause
exit /b
)
set "AUSGABE=%temp%\toptorials_markierte_elemente.txt"
if exist "%AUSGABE%" del "%AUSGABE%"
:loop
if "%~1"=="" goto fertig
echo %~1>>"%AUSGABE%"
shift
goto loop
:fertig
type "%AUSGABE%" | clip
echo Fertig.
echo Die markierten Elemente wurden in die Zwischenablage kopiert.
echo.
pause
Unterschied zwischen Namen und Pfaden
Der wichtigste Unterschied liegt in dieser Zeile.
Namen-Variante:
echo %~nx1>>"%AUSGABE%"
Pfad-Variante:
echo %~1>>"%AUSGABE%"
%~nx1 gibt nur den Namen mit Dateiendung aus.
%~1 gibt den übergebenen Parameter aus. Bei SendTo ist das normalerweise der vollständige Pfad.
Variante 5: Rekursive Dateiliste als Textdatei
Diese Variante erstellt eine rekursive Liste eines übergebenen Ordners als Textdatei.
Die Datei heißt:
003_sendto_ordner_rekursiv_als_txt.bat
Diese Variante erwartet einen Ordner. Im übergebenen Ordner wird die Datei dateiliste_rekursiv.txt erstellt. Der Inhalt wird zusätzlich in die Zwischenablage kopiert.
Der komplette Code dieser Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 003_sendto_ordner_rekursiv_als_txt.bat
REM Beschreibung: Erstellt eine rekursive Dateiliste fuer einen uebergebenen Ordner als Textdatei.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM
REM Hinweis:
REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
REM ============================================================
echo.
:: Behebt das Umlautproblem (für ANSI/Windows-1252 codierte Skripte)
chcp 1252 >nul
if "%~1"=="" (
echo Bitte sende einen Ordner an dieses Skript.
echo.
pause
exit /b
)
if not exist "%~1\" (
echo Der uebergebene Pfad ist kein Ordner:
echo %~1
echo.
pause
exit /b
)
set "ZIEL=%~1"
set "AUSGABE=%ZIEL%\dateiliste_rekursiv.txt"
echo Rekursive Dateiliste wird erstellt...
echo Ordner:
echo %ZIEL%
echo.
:: /a sorgt dafuer, dass Dateien UND Ordner rekursiv (/s) ausgegeben werden
dir "%ZIEL%" /b /s /a > "%AUSGABE%"
type "%AUSGABE%" | clip
echo Fertig.
echo Die Datei wurde erstellt:
echo %AUSGABE%
echo.
echo Der Inhalt wurde zusaetzlich in die Zwischenablage kopiert.
echo.
pause
Code der rekursiven Textdatei-Variante erklärt
Prüfen, ob ein Ordner übergeben wurde
if "%~1"=="" (
echo Bitte sende einen Ordner an dieses Skript.
echo.
pause
exit /b
)
Wenn kein Ordner übergeben wurde, zeigt das Skript eine Meldung an und beendet sich.
Prüfen, ob der übergebene Pfad ein Ordner ist
if not exist "%~1\" (
echo Der uebergebene Pfad ist kein Ordner:
echo %~1
echo.
pause
exit /b
)
Der Backslash am Ende von %~1\ sorgt dafür, dass gezielt auf einen Ordner geprüft wird.
Zielordner und Ausgabedatei festlegen
set "ZIEL=%~1"
set "AUSGABE=%ZIEL%\dateiliste_rekursiv.txt"
Der übergebene Ordner wird in der Variable ZIEL gespeichert.
Die Ausgabedatei wird direkt im übergebenen Ordner erstellt und heißt dateiliste_rekursiv.txt.
Rekursive Liste erstellen
dir "%ZIEL%" /b /s /a > "%AUSGABE%"
Diese Zeile erstellt die eigentliche rekursive Liste.
dir "%ZIEL%" listet den Inhalt des Zielordners auf.
/b erzeugt eine einfache Ausgabe.
/s durchsucht den Ordner inklusive Unterordnern.
/a sorgt dafür, dass Dateien und Ordner ausgegeben werden.
Die Ausgabe wird in die Datei dateiliste_rekursiv.txt geschrieben.
Variante 6: Rekursive relative Pfade in die Zwischenablage kopieren
Diese Variante erstellt keine Textdatei im übergebenen Ordner. Stattdessen wird eine rekursive Liste mit relativen Pfaden direkt in die Zwischenablage kopiert.
Die Datei heißt:
003_sendto_ordner_rekursiv_relative_pfade_in_clipboard.bat
Diese Variante erwartet genau einen Ordner. Wenn kein Ordner oder mehrere Elemente übergeben werden, bricht das Skript mit einer Meldung ab.
Relative Pfade sind besonders übersichtlich, weil der lange Anfangspfad weggelassen wird.
Beispiel:
01_Einfach
02_Mit Zwischenablage
01_Einfach\03_dateiliste_erstellen.bat
Der komplette Code dieser Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 003_sendto_ordner_rekursiv_relative_pfade_in_clipboard.bat
REM Beschreibung: Kopiert eine rekursive Dateiliste mit relativen Pfaden fuer einen uebergebenen Ordner in die Zwischenablage.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM
REM Hinweis:
REM Dieses Script erstellt keine Textdatei im uebergebenen Ordner.
REM Die Ausgabe wird nur in die Zwischenablage kopiert.
REM ============================================================
echo.
:: Behebt das Umlautproblem fuer ANSI/Windows-1252 codierte Skripte
chcp 1252 >nul
setlocal enabledelayedexpansion
if "%~1"=="" (
echo Bitte sende genau einen Ordner an dieses Skript.
echo.
pause
exit /b
)
if not "%~2"=="" (
echo Bitte nur einen einzigen Ordner an dieses Skript senden.
echo.
echo Es wurden mehrere Elemente uebergeben.
echo.
pause
exit /b
)
if not exist "%~1\" (
echo Der uebergebene Pfad ist kein Ordner:
echo %~1
echo.
pause
exit /b
)
set "ZIEL=%~1"
set "AUSGABE=%TEMP%\dateiliste_rekursiv_relative_pfade_%RANDOM%_%RANDOM%.txt"
if exist "%AUSGABE%" del "%AUSGABE%"
echo Rekursive Dateiliste mit relativen Pfaden wird erstellt...
echo Ordner:
echo %ZIEL%
echo.
(
echo Rekursive Dateiliste mit relativen Pfaden
echo.
echo Durchsuchter Ordner:
echo %ZIEL%
echo.
echo ============================================================
echo.
) > "%AUSGABE%"
for /f "delims=" %%A in ('dir "%ZIEL%" /b /s /a 2^>nul') do (
set "VOLL=%%A"
set "REL=!VOLL:%ZIEL%\=!"
>>"%AUSGABE%" echo(!REL!
)
type "%AUSGABE%" | clip
del "%AUSGABE%" >nul 2>nul
echo Fertig.
echo Die rekursive Dateiliste mit relativen Pfaden wurde in die Zwischenablage kopiert.
echo.
pause
Code der relativen Pfad-Variante erklärt
setlocal enabledelayedexpansion
setlocal enabledelayedexpansion
Diese Zeile aktiviert die verzögerte Variablenerweiterung.
Das ist hier wichtig, weil Variablen innerhalb einer Schleife verändert und direkt wieder gelesen werden. Dafür wird später die Schreibweise mit Ausrufezeichen verwendet, zum Beispiel !REL!.
Prüfen, ob genau ein Ordner übergeben wurde
if "%~1"=="" (
echo Bitte sende genau einen Ordner an dieses Skript.
echo.
pause
exit /b
)
if not "%~2"=="" (
echo Bitte nur einen einzigen Ordner an dieses Skript senden.
echo.
echo Es wurden mehrere Elemente uebergeben.
echo.
pause
exit /b
)
Diese Variante soll bewusst nur mit einem einzigen Ordner arbeiten. Deshalb wird zuerst geprüft, ob überhaupt etwas übergeben wurde, und danach, ob vielleicht zu viele Elemente übergeben wurden.
Temporäre Ausgabedatei mit Zufallsnamen
set "AUSGABE=%TEMP%\dateiliste_rekursiv_relative_pfade_%RANDOM%_%RANDOM%.txt"
Die Ausgabe wird nicht im Zielordner gespeichert, sondern nur vorübergehend im Temp-Ordner. Durch %RANDOM% bekommt die Datei einen zufälligen Namen. Dadurch sinkt das Risiko, dass eine vorhandene temporäre Datei überschrieben wird.
Kopfbereich in die Ausgabe schreiben
(
echo Rekursive Dateiliste mit relativen Pfaden
echo.
echo Durchsuchter Ordner:
echo %ZIEL%
echo.
echo ============================================================
echo.
) > "%AUSGABE%"
Dieser Block schreibt einen Kopfbereich in die Ausgabedatei. Dadurch ist später in der Zwischenablage sichtbar, welcher Ordner durchsucht wurde.
Relative Pfade erzeugen
for /f "delims=" %%A in ('dir "%ZIEL%" /b /s /a 2^>nul') do (
set "VOLL=%%A"
set "REL=!VOLL:%ZIEL%\=!"
>>"%AUSGABE%" echo(!REL!
)
Dieser Block erstellt die rekursive Liste und wandelt die vollständigen Pfade in relative Pfade um.
dir "%ZIEL%" /b /s /a liefert zunächst vollständige Pfade.
Mit
set "REL=!VOLL:%ZIEL%\=!"
wird der Anfangspfad entfernt. Übrig bleibt nur der relative Teil bezogen auf den übergebenen Ordner.
Variante 7: Rekursive absolute Pfade in die Zwischenablage kopieren
Diese Variante erstellt ebenfalls keine Textdatei im übergebenen Ordner. Die Ausgabe wird nur in die Zwischenablage kopiert.
Die Datei heißt:
003_sendto_ordner_rekursiv_absolute_pfade_in_clipboard.bat
Im Unterschied zur relativen Variante werden hier die vollständigen absoluten Pfade ausgegeben.
Beispiel:
C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\003_Dateiliste_erstellen\01_Einfach
C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\003_Dateiliste_erstellen\01_Einfach\03_dateiliste_erstellen.bat
Der komplette Code dieser Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 003_sendto_ordner_rekursiv_absolute_pfade_in_clipboard.bat
REM Beschreibung: Kopiert eine rekursive Dateiliste mit absoluten Pfaden fuer einen uebergebenen Ordner in die Zwischenablage.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM
REM Hinweis:
REM Dieses Script erstellt keine Textdatei im uebergebenen Ordner.
REM Die Ausgabe wird nur in die Zwischenablage kopiert.
REM ============================================================
echo.
:: Behebt das Umlautproblem fuer ANSI/Windows-1252 codierte Skripte
chcp 1252 >nul
if "%~1"=="" (
echo Bitte sende genau einen Ordner an dieses Skript.
echo.
pause
exit /b
)
if not "%~2"=="" (
echo Bitte nur einen einzigen Ordner an dieses Skript senden.
echo.
echo Es wurden mehrere Elemente uebergeben.
echo.
pause
exit /b
)
if not exist "%~1\" (
echo Der uebergebene Pfad ist kein Ordner:
echo %~1
echo.
pause
exit /b
)
set "ZIEL=%~1"
set "AUSGABE=%TEMP%\dateiliste_rekursiv_absolute_pfade_%RANDOM%_%RANDOM%.txt"
if exist "%AUSGABE%" del "%AUSGABE%"
echo Rekursive Dateiliste mit absoluten Pfaden wird erstellt...
echo Ordner:
echo %ZIEL%
echo.
(
echo Rekursive Dateiliste mit absoluten Pfaden
echo.
echo Durchsuchter Ordner:
echo %ZIEL%
echo.
echo ============================================================
echo.
dir "%ZIEL%" /b /s /a
) > "%AUSGABE%"
type "%AUSGABE%" | clip
del "%AUSGABE%" >nul 2>nul
echo Fertig.
echo Die rekursive Dateiliste mit absoluten Pfaden wurde in die Zwischenablage kopiert.
echo.
pause
Code der absoluten Pfad-Variante erklärt
Diese Variante ist einfacher als die relative Variante, weil keine Pfade gekürzt werden müssen.
Der wichtigste Bereich ist:
(
echo Rekursive Dateiliste mit absoluten Pfaden
echo.
echo Durchsuchter Ordner:
echo %ZIEL%
echo.
echo ============================================================
echo.
dir "%ZIEL%" /b /s /a
) > "%AUSGABE%"
Hier wird zuerst ein Kopfbereich geschrieben und danach direkt die rekursive Dateiliste erzeugt.
Mit
dir "%ZIEL%" /b /s /a
werden Dateien und Ordner inklusive Unterordnern ausgegeben. Da /s verwendet wird, enthält die Ausgabe vollständige Pfade.
Wie werden die SendTo-Varianten eingerichtet?
Die SendTo-Batchdateien oder Verknüpfungen davon können in den Windows-Ordner Senden an gelegt werden.
Den SendTo-Ordner öffnet man mit:
shell:sendto
Danach kann man im Explorer Dateien oder Ordner markieren und mit Rechtsklick > Senden an an das gewünschte Skript übergeben.
Welche Variante brauche ich?
Die Varianten unterscheiden sich vor allem darin, welche Ausgabe erzeugt werden soll.
- Einfache Dateiliste: Wenn du nur die Dateien im aktuellen Ordner als Textdatei speichern möchtest.
- Dateiliste mit Zwischenablage: Wenn du die Dateiliste zusätzlich sofort einfügen möchtest.
- Namen markierter Elemente: Wenn du nur die Namen ausgewählter Dateien oder Ordner brauchst.
- Pfade markierter Elemente: Wenn du die vollständigen Pfade ausgewählter Dateien oder Ordner brauchst.
- Rekursiv als Textdatei: Wenn du eine dauerhafte rekursive Liste im Ordner speichern möchtest.
- Rekursiv relative Pfade: Wenn du eine übersichtliche Struktur ohne lange Anfangspfade kopieren möchtest.
- Rekursiv absolute Pfade: Wenn du exakte vollständige Pfade dokumentieren oder weitergeben möchtest.
Wichtige Hinweise
- Die einfachen Varianten erstellen eine Datei namens
dateiliste.txt. - Die rekursive Textdatei-Variante erstellt eine Datei namens
dateiliste_rekursiv.txt. - Die Clipboard-Varianten erzeugen nur temporäre Dateien und kopieren die Ausgabe in die Zwischenablage.
- Die rekursiven Clipboard-Varianten erwarten genau einen Ordner.
- Bei sehr großen Ordnerstrukturen können sehr lange Listen entstehen.
- Die Skripte löschen, verschieben oder benennen keine vorhandenen Dateien um.
Häufige Fehler
Die Datei wird nur im Editor geöffnet
Dann wurde sie wahrscheinlich als Textdatei gespeichert.
Die Datei muss zum Beispiel so heißen:
03_dateiliste_erstellen.bat
und nicht:
03_dateiliste_erstellen.bat.txt
Die SendTo-Variante meldet, dass nichts übergeben wurde
Dann wurde das Skript wahrscheinlich direkt per Doppelklick gestartet.
SendTo-Varianten erwarten Dateien oder Ordner, die im Explorer markiert und über Senden an übergeben werden.
Die rekursive Variante meldet, dass mehrere Elemente übergeben wurden
Die rekursiven Clipboard-Varianten für relative und absolute Pfade erwarten genau einen Ordner. Wenn mehrere Elemente übergeben werden, bricht das Skript bewusst ab.
Die Datei dateiliste.txt ist plötzlich in der Liste enthalten
Wenn ein Skript eine Dateiliste im gleichen Ordner erstellt, kann diese Ausgabedatei später ebenfalls im Ordner liegen. Bei einem erneuten Durchlauf kann sie deshalb mit aufgelistet werden.
Wenn eine absolut saubere Liste benötigt wird, kann man die alte dateiliste.txt vorher löschen oder die Ausgabe in einen anderen Ordner schreiben.
Was haben wir gelernt?
In diesem Teil wurden mehrere wichtige Batch-Grundlagen gezeigt:
dir listet Dateien und Ordner auf.
/b erzeugt eine einfache Ausgabe.
/a-d listet nur Dateien auf.
/s durchsucht Unterordner rekursiv.
/a gibt Dateien und Ordner aus.
> schreibt eine Ausgabe in eine Datei.
>> hängt eine Ausgabe an eine Datei an.
type liest den Inhalt einer Textdatei.
clip kopiert Text in die Windows-Zwischenablage.
%~1 steht für den ersten übergebenen Parameter.
%~nx1 gibt Name und Erweiterung eines Parameters aus.
shift verarbeitet mehrere übergebene Elemente nacheinander.
setlocal enabledelayedexpansion hilft bei Variablen in Schleifen.
Damit ist dieses Skript-Paket ein sehr nützliches Werkzeug, um Dateien, Pfade und Ordnerstrukturen schnell zu dokumentieren oder weiterzuverarbeiten.
Video zu diesem Tutorial:
Das könnte Dich auch interessieren
Keine Einträge gefunden

