Jump to content

DOS Batch Unterverzeichnisse anzeigen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

 

ich hoff ich bin hier richtig.

 

Und zwar bin ich dabei in meiner Abteilung eine neue Ordnerstruktur anzulegen.

 

Ich würde mir die Bestehende gerne vorher als Baumstruktur herauslaussen damich ich eine Übersicht der Unterordner habe.

 

Die Baumstruktur der Ordner/Unterordner bekomme ich mit dem DOS Befehl: tree /a >inhalt.txt

 

Da der Ordner aber 90.786 Unterordner hat und ich die Datei inhalt.txt in Word kopiere ergibt das über 1000 Seiten.

 

Jetzt will ich mir nur die ersten zwei Unterordner in eine .txt schreiben lassen.

 

Was für einen Befehl nehme ich dafür?

 

Gruss und schon mal Danke

 

Jimmy

Geschrieben

$baseLevel = (Get-Location).ToString().Split("´\").Count;

Get-ChildItem -Recurse | Where-Object { $_.PSIsContainer} |

ForEach-Object { "`t" * ($_.Fullname.Split("´\").Count -

$baseLevel - 1) + $_.Name } | Out-File c:\tmp\inhalt.txt -Encoding utf8

 

Das würde doch zum selben Ergbnis führen wie: three /a >inhalt.txt

Oder?

 

Und wie wende ich das jetzt an bzw. schreib es auf 2 Unterordner um?

Geschrieben
Und wie wende ich das jetzt an

damit du das auch weißt:

Entweder

Start + nach "powershell" suchen

oder

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

 

PS.: auch höhere Powershell Versionen sind unter v1.0 zu finden

lg

Geschrieben (bearbeitet)

So das Script habe ich zum Laufen bekommen.

 

Jetzt würde ich dies aber gerne noch als Baumstruktur anzeigen lassen.. (tree)

 

Mit zwei Unterordnern funktioniert es auch nur zeigt er mir dann auch noch Dateien aus dem Unterordner an. Kann man das deaktivieren?

 

Wie kann ichs auf 3 Unterordner erweitern?

 

Gruss

Jimmy

bearbeitet von JimmyBoy
Geschrieben

Welches meinst du? Das von mir?

Einfach eine weitere Ebene einfügen und die Datei kannst du mit "? { $_.PsIsContainer }" ausblenden:

foreach($rootfolder in (get-childitem E:\Daten | ? { $_.PsIsContainer } )){
  foreach($folder in (get-childitem $rootfolder.FullName | ? { $_.PsIsContainer } )){
     foreach($folder2 in (get-childitem $folder.FullName | ? { $_.PsIsContainer } )){
         $folder2.FullName | out-file inhalt.txt -append
     }
  }
}

 

Wenn du eine andere Ausgabe haben möchtest musst du in jeder Ebene diese ausgeben und entsprechende Zeichen (z.B. - oder |- oder ähnliches) davor setzen.

Geschrieben

Selbst nachbauen. Einfach mein Script erweitern.

 

Sieht zwar nicht so hübsch wie tree.exe aus aber versuch mal folgendes:

 

$root = 'E:\Daten'
"$root"
foreach($rootfolder in (get-childitem $root | ? { $_.PsIsContainer } )){
  "├───$($rootfolder.Name)"
  foreach($folder in (get-childitem $rootfolder.FullName | ? { $_.PsIsContainer } )){
     "│    ├───$($folder.Name)"
     foreach($folder2 in (get-childitem $folder.FullName | ? { $_.PsIsContainer } )){
         "│    │    ├───$($folder2.Name)"
     }
  }
}

 

Und wenn das in eine Datei soll "| out-file inhalt.txt -append" hinter jede Zeit, die mit einem Anführungszeichen beginnt schreiben

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...