DOS Batch Unterverzeichnisse anzeigen
Erstellt von
JimmyBoy
, 11. Okt 2012 13:27
13 Antworten in diesem Thema
#1
Geschrieben 11. Oktober 2012 - 13:27
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
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
#4
Geschrieben 11. Oktober 2012 - 13:55
$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?
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?
#7
Geschrieben 12. Oktober 2012 - 04:58
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
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, 12. Oktober 2012 - 05:15.
#8
Geschrieben 12. Oktober 2012 - 05:39
Welches meinst du? Das von mir?
Einfach eine weitere Ebene einfügen und die Datei kannst du mit "? { $_.PsIsContainer }" ausblenden:
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.
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.
Unless your name is Google
Stop acting like you know everything
Stop acting like you know everything
#12
Geschrieben 12. Oktober 2012 - 12:51
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.
Unless your name is Google
Stop acting like you know everything
Stop acting like you know everything
#14
Geschrieben 12. Oktober 2012 - 13:23
Selbst nachbauen. Einfach mein Script erweitern.
Sieht zwar nicht so hübsch wie tree.exe aus aber versuch mal folgendes:
Und wenn das in eine Datei soll "| out-file inhalt.txt -append" hinter jede Zeit, die mit einem Anführungszeichen beginnt schreiben
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
Unless your name is Google
Stop acting like you know everything
Stop acting like you know everything










