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

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

Link zu diesem Kommentar

$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?

Link zu diesem Kommentar

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
Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...