# Wirft aktuell Fehler, wenn man zurück in das Laufwerkverzeichnis geht! Function Main { $LaufwerkAuswahlAktiv = $true $DateiAuswahlAktiv = $true while ($LaufwerkAuswahlAktiv) { $Laufwerke = LaufwerkeFinden Write-Host "Gefundene Laufwerke: " $Laufwerke $Pfad = Laufwerkwaehlen $Laufwerke Write-Host "Gewähltes Laufwerk: " $Pfad $LaufwerkAuswahlAktiv = $false $DateiAuswahlAktiv= $true while ($DateiAuswahlAktiv) { $UnterOrdner = UnterOrdnerFinden $Pfad Write-Host "Mögliche Unterordner: " $UnterOrdner $TxtDateien = TxtDateienFinden $Pfad Write-Host "Mögliche txt Dateien: " $TxtDateien #-> Fall einbauen, wenn es weder Unterordner noch TxtDateien gibt? $AuswahlOptionen = Optionen $UnterOrdner $TxtDateien Write-Host "Auswahloptionen: " $AuswahlOptionen $Auswahl = OrdnerWaehlen $Pfad $AuswahlOptionen Write-Host "Gewählte Option: " $Auswahl if ($Auswahl -ne "Zurueck") { $Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve } else { Write-Host "Eine Ordnerebene zurück" $Pfad = Split-Path $Pfad Write-Host "Neuer Pfad: " $Pfad if ($($Pfad.Length -le 3)) { Write-Host "Der Pfad ist kürzer als 3 Zeichen -> Laufwerk wählen" $DateiAusahlAktiv = $false } } Write-Host "Aktueller Pfad : " $Pfad if ($($Auswahl -match ".txt")) #Besser: Letzte 4 Zeichen von auswahl nehmen und dann -eq { Write-Host "Es handelt sich um eine .txt-Datei" $DateiauswahlAktiv = $false } Write-Host "--------------------------------------------------------------------------------------" # Zwei ifs #1 .txt-Datei gewählt -> $DateiAuswahlAktiv = $false #2 Pfad ist aufgrund von "Zurück" leer (kein Laufwerk mehr) -> $LaufwerkauswahlAktiv = $true } Write-Host "Gewählte Datei: " $Pfad } } Function LaufwerkeFinden() { $Laufwerke = $(Get-PSDrive | where {$_.Free}).Name $i = 0 foreach($Laufwerk in $Laufwerke) { $Laufwerke[$i] = $Laufwerk + ":\" $i++ } return $Laufwerke } Function Laufwerkwaehlen($Laufwerke) { $Eingabe = $Laufwerke | Out-GridView -PassThru -Title "Laufwerke" return $Eingabe } Function UnterOrdnerFinden($Pfad) { #abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung return $(Get-Childitem $Pfad -Directory) } Function TxtDateienFinden($Pfad) { $TxtDateien = $(Get-Childitem $Pfad\*.txt) if ($TxtDateien.Length -gt 0) { return $(Split-Path $TxtDateien -Leaf) } else { return } } Function Optionen($UnterOrdner, $TxtDateien) { #Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück $OrdnerFormat = @() $TxtDateienFormat = @() foreach ($Ordner in $UnterOrdner) { $OrdnerFormat += [System.String]$Ordner } foreach ($TxtDatei in $TxtDateien) { $TxtDateienFormat += [System.String]$TxtDatei } $Optionen = $OrdnerFormat + $TxtDateienFormat + "Zurueck" return $Optionen } Function OrdnerWaehlen($Pfad, $AuswahlOptionen) { if ($Pfad -eq "") { $Pfad = "Laufwerke" } $Eingabe = $AuswahlOptionen | Out-GridView -PassThru -Title $Pfad Write-Host "Gewählte Option in Funktion: " $Input return $Eingabe } Main