MKdir für alle ordner auf allen Festplatten erzeugen
# Pfad für die Ausgabedatei
# WARNUNG: Diese Datei kann SEHR groß werden! Stellen Sie sicher, dass genug Speicherplatz vorhanden ist.
# Sie können diesen Pfad bei Bedarf anpassen (z.B. "D:\MeinDateibaum\Komplett.txt")
$AusgabeDatei = "C:\Temp\Dateibaum_Komplett.txt"
# Sicherstellen, dass der übergeordnete Ordner für die Ausgabedatei existiert
$AusgabeOrdner = Split-Path -Parent $AusgabeDatei
if (-not (Test-Path $AusgabeOrdner)) {
Write-Host "Erstelle Ordner für Ausgabedatei: $AusgabeOrdner"
# Use -Force just in case the parent path structure doesn't fully exist
New-Item -Path $AusgabeOrdner -ItemType Directory -Force | Out-Null
}
# Datei leeren, falls sie bereits existiert, oder neu erstellen
Write-Host "Leere oder erstelle Ausgabedatei: $AusgabeDatei"
Out-File -Path $AusgabeDatei -Force -Encoding UTF8 | Out-Null
# Alle Dateisystem-Laufwerke abrufen (z.B. C:, D:, etc.)
# Filtert typischerweise Netzwerk- oder System-Laufwerke ohne Root-Pfad heraus
$Laufwerke = Get-PSDrive -PSProvider FileSystem | Where-Object {$_.Root -like '*:\'}
Write-Host "Beginne mit dem Scannen der Laufwerke. Das kann SEHR lange dauern (Stunden bei vielen Dateien!)..."
Write-Host "Fortschritt wird nicht detailliert angezeigt, nur pro Laufwerk."
Write-Host "Fehlermeldungen bei fehlenden Berechtigungen (z.B. auf Systemordner) sind normal und werden ignoriert."
# Für jedes Laufwerk den Dateibaum abrufen und in die Datei schreiben
foreach ($laufwerk in $Laufwerke) {
$laufwerkRoot = "$($laufwerk.Root)" # z.B. "C:\"
Write-Host " Scanne Laufwerk: $laufwerkRoot ..."
# Get-ChildItem ruft alle Ordner und Dateien rekursiv ab (-Recurse)
# -ErrorAction SilentlyContinue ignoriert Zugriffsfehler auf Systemordnern, für die der aktuelle Benutzer keine Berechtigung hat
# Select-Object FullName wählt nur den vollständigen Pfad des Elements aus
# Out-File -Append schreibt das Ergebnis zeilenweise an das Ende der Ausgabedatei
# -Encoding UTF8 stellt sicher, dass Sonderzeichen korrekt dargestellt werden
try {
Get-ChildItem -Path $laufwerkRoot -Recurse -ErrorAction SilentlyContinue |
Select-Object FullName |
Out-File -Path $AusgabeDatei -Append -Encoding UTF8
Write-Host " Scannen von Laufwerk $laufwerkRoot abgeschlossen."
}
catch {
Write-Host " FEHLER beim Scannen von Laufwerk $laufwerkRoot: $($_.Exception.Message)" -ForegroundColor Red
}
}
Write-Host "Scannen aller ausgewählten Laufwerke abgeschlossen."
Write-Host "Der vollständige Dateibaum wurde in die Datei ""$AusgabeDatei"" geschrieben."
Write-Host ""
Write-Host "Öffnen Sie diese Datei (z.B. mit Notepad++ oder VS Code) um Ihren Dateibaum zu sichten."
Write-Host "Bereiten Sie sich darauf vor, dass die Datei sehr groß sein kann!"
# WARNUNG: Diese Datei kann SEHR groß werden! Stellen Sie sicher, dass genug Speicherplatz vorhanden ist.
# Sie können diesen Pfad bei Bedarf anpassen (z.B. "D:\MeinDateibaum\Komplett.txt")
$AusgabeDatei = "C:\Temp\Dateibaum_Komplett.txt"
# Sicherstellen, dass der übergeordnete Ordner für die Ausgabedatei existiert
$AusgabeOrdner = Split-Path -Parent $AusgabeDatei
if (-not (Test-Path $AusgabeOrdner)) {
Write-Host "Erstelle Ordner für Ausgabedatei: $AusgabeOrdner"
# Use -Force just in case the parent path structure doesn't fully exist
New-Item -Path $AusgabeOrdner -ItemType Directory -Force | Out-Null
}
# Datei leeren, falls sie bereits existiert, oder neu erstellen
Write-Host "Leere oder erstelle Ausgabedatei: $AusgabeDatei"
Out-File -Path $AusgabeDatei -Force -Encoding UTF8 | Out-Null
# Alle Dateisystem-Laufwerke abrufen (z.B. C:, D:, etc.)
# Filtert typischerweise Netzwerk- oder System-Laufwerke ohne Root-Pfad heraus
$Laufwerke = Get-PSDrive -PSProvider FileSystem | Where-Object {$_.Root -like '*:\'}
Write-Host "Beginne mit dem Scannen der Laufwerke. Das kann SEHR lange dauern (Stunden bei vielen Dateien!)..."
Write-Host "Fortschritt wird nicht detailliert angezeigt, nur pro Laufwerk."
Write-Host "Fehlermeldungen bei fehlenden Berechtigungen (z.B. auf Systemordner) sind normal und werden ignoriert."
# Für jedes Laufwerk den Dateibaum abrufen und in die Datei schreiben
foreach ($laufwerk in $Laufwerke) {
$laufwerkRoot = "$($laufwerk.Root)" # z.B. "C:\"
Write-Host " Scanne Laufwerk: $laufwerkRoot ..."
# Get-ChildItem ruft alle Ordner und Dateien rekursiv ab (-Recurse)
# -ErrorAction SilentlyContinue ignoriert Zugriffsfehler auf Systemordnern, für die der aktuelle Benutzer keine Berechtigung hat
# Select-Object FullName wählt nur den vollständigen Pfad des Elements aus
# Out-File -Append schreibt das Ergebnis zeilenweise an das Ende der Ausgabedatei
# -Encoding UTF8 stellt sicher, dass Sonderzeichen korrekt dargestellt werden
try {
Get-ChildItem -Path $laufwerkRoot -Recurse -ErrorAction SilentlyContinue |
Select-Object FullName |
Out-File -Path $AusgabeDatei -Append -Encoding UTF8
Write-Host " Scannen von Laufwerk $laufwerkRoot abgeschlossen."
}
catch {
Write-Host " FEHLER beim Scannen von Laufwerk $laufwerkRoot: $($_.Exception.Message)" -ForegroundColor Red
}
}
Write-Host "Scannen aller ausgewählten Laufwerke abgeschlossen."
Write-Host "Der vollständige Dateibaum wurde in die Datei ""$AusgabeDatei"" geschrieben."
Write-Host ""
Write-Host "Öffnen Sie diese Datei (z.B. mit Notepad++ oder VS Code) um Ihren Dateibaum zu sichten."
Write-Host "Bereiten Sie sich darauf vor, dass die Datei sehr groß sein kann!"