Zum Inhalt wechseln


Foto

DOS Batch Unterverzeichnisse anzeigen


  • Bitte melde dich an um zu Antworten
13 Antworten in diesem Thema

#1 JimmyBoy

JimmyBoy

    Newbie

  • 7 Beiträge

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

#2 Dukel

Dukel

    Board Veteran

  • 6.246 Beiträge

Geschrieben 11. Oktober 2012 - 13:31

Am besten Powershell. Schau dir get-childitem und out-file an.
Unless your name is Google
Stop acting like you know everything

#3 JimmyBoy

JimmyBoy

    Newbie

  • 7 Beiträge

Geschrieben 11. Oktober 2012 - 13:45

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...

#4 JimmyBoy

JimmyBoy

    Newbie

  • 7 Beiträge

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?

#5 Dukel

Dukel

    Board Veteran

  • 6.246 Beiträge

Geschrieben 11. Oktober 2012 - 14:02

Wieso so kompliziert?

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

Unless your name is Google
Stop acting like you know everything

#6 Stefan W

Stefan W

    Board Veteran

  • 1.493 Beiträge

Geschrieben 11. Oktober 2012 - 15:00

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

#7 JimmyBoy

JimmyBoy

    Newbie

  • 7 Beiträge

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

Bearbeitet von JimmyBoy, 12. Oktober 2012 - 05:15.


#8 Dukel

Dukel

    Board Veteran

  • 6.246 Beiträge

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:
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

#9 JimmyBoy

JimmyBoy

    Newbie

  • 7 Beiträge

Geschrieben 12. Oktober 2012 - 10:00

Ja das von dir.

Wie meinst du das mit davor setzen um die Ausgabe zu verändern?

Wo muss ich -tree davor setzen?

#10 Dukel

Dukel

    Board Veteran

  • 6.246 Beiträge

Geschrieben 12. Oktober 2012 - 10:25

-tree gibt es nicht, dass musst du manuell Scripten.
Unless your name is Google
Stop acting like you know everything

#11 JimmyBoy

JimmyBoy

    Newbie

  • 7 Beiträge

Geschrieben 12. Oktober 2012 - 12:39

Was meinst du mit manuell?

#12 Dukel

Dukel

    Board Veteran

  • 6.246 Beiträge

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

#13 JimmyBoy

JimmyBoy

    Newbie

  • 7 Beiträge

Geschrieben 12. Oktober 2012 - 13:08

Okay jetzt hab ich verstanden. Aber was gibt es dann für Befehle um eine Baumstruktur zu bekommen wenn es -tree nicht gibt?

#14 Dukel

Dukel

    Board Veteran

  • 6.246 Beiträge

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:

$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