JimmyBoy 10 Geschrieben 11. Oktober 2012 Melden Teilen Geschrieben 11. Oktober 2012 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 11. Oktober 2012 Melden Teilen Geschrieben 11. Oktober 2012 Am besten Powershell. Schau dir get-childitem und out-file an. Zitieren Link zu diesem Kommentar
JimmyBoy 10 Geschrieben 11. Oktober 2012 Autor Melden Teilen Geschrieben 11. Oktober 2012 Mit Powershell kenn ich mich leider nicht aus... komm nicht aus dem IT Bereich. Hab es jetzt zwar installiert weiß aber nicht wie ich es öffne... Zitieren Link zu diesem Kommentar
JimmyBoy 10 Geschrieben 11. Oktober 2012 Autor Melden Teilen Geschrieben 11. Oktober 2012 $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? Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 11. Oktober 2012 Melden Teilen Geschrieben 11. Oktober 2012 Wieso so kompliziert? foreach($rootfolder in (get-childitem E:\Daten)){ foreach($folder in (get-childitem $rootfolder.FullName)){ $folder.FullName | out-file inhalt.txt -append } } Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 11. Oktober 2012 Melden Teilen Geschrieben 11. Oktober 2012 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 Zitieren Link zu diesem Kommentar
JimmyBoy 10 Geschrieben 12. Oktober 2012 Autor Melden Teilen Geschrieben 12. Oktober 2012 (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 12. Oktober 2012 von JimmyBoy Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 12. Oktober 2012 Melden Teilen Geschrieben 12. Oktober 2012 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. Zitieren Link zu diesem Kommentar
JimmyBoy 10 Geschrieben 12. Oktober 2012 Autor Melden Teilen Geschrieben 12. Oktober 2012 Ja das von dir. Wie meinst du das mit davor setzen um die Ausgabe zu verändern? Wo muss ich -tree davor setzen? Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 12. Oktober 2012 Melden Teilen Geschrieben 12. Oktober 2012 -tree gibt es nicht, dass musst du manuell Scripten. Zitieren Link zu diesem Kommentar
JimmyBoy 10 Geschrieben 12. Oktober 2012 Autor Melden Teilen Geschrieben 12. Oktober 2012 Was meinst du mit manuell? Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 12. Oktober 2012 Melden Teilen Geschrieben 12. Oktober 2012 Der Teil "$folder2.FullName | out-file inhalt.txt -append" ist die Ausgabe in eine Datei. Dort wird aber nur der Pfad ausgegeben. Wenn du Mehr als nur die Pfade haben willst musst du dieses in der Ausgabe anpassen. Zitieren Link zu diesem Kommentar
JimmyBoy 10 Geschrieben 12. Oktober 2012 Autor Melden Teilen Geschrieben 12. Oktober 2012 Okay jetzt hab ich verstanden. Aber was gibt es dann für Befehle um eine Baumstruktur zu bekommen wenn es -tree nicht gibt? Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 12. Oktober 2012 Melden Teilen Geschrieben 12. Oktober 2012 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.