Christoph_A4 10 Geschrieben 15. November 2013 Melden Geschrieben 15. November 2013 (bearbeitet) Hallo, ich glaube ich mache es mir unnötig schwer, jedenfalls komm ich mit meinem Weg an dieser Stelle nicht mehr weiter. Ich bräuchte mal einen Ansatz, folgende Aufgabe: Ich habe ein Ordnerstruktur, aktuell bestehend aus 120 Ordnern. In diesen befinden sich Dateien, es ist keine weitere Ordnerebenen vorhanden. Ich möchte ganz einfach jeweils die Dateien zählen. Wenn eine bestimmte Dateienanzahl pro Ordner erreicht ist, möchte ich diese in eine txt oder csv-Datei exportieren, allein mit den Informationen, welchen der 120 Ordner es betrifft und deren Dateien bearbeitet 15. November 2013 von Christoph_A4
Dukel 468 Geschrieben 15. November 2013 Melden Geschrieben 15. November 2013 Und wo ist jetzt dein Problem? Schleife über alle Ordner und für jeden Ordner die Dateien zählen und bei überschreiten den Ordnernamen raus schreiben.
Christoph_A4 10 Geschrieben 15. November 2013 Autor Melden Geschrieben 15. November 2013 (bearbeitet) Mein Problem ist, dass ich mit Powershell nach einem Grundkurs quasi erst anfange. ;-) [array]$ordner=Get-ChildItem "\\c:\_terminalserverprofile_test\*\Eigene Dateien\BriefkorbTS" foreach ($profilordner in $ordner) { (Get-ChildItem $profilordner.FullName -Recurse) echo "Anzahl Dateien:" ($anzahl=(Get-ChildItem $profilordner.FullName -Recurse).count) if ($anzahl -gt 4) {$xyz | Set-Content -Path "c:\test.csv"} } Das ist mein Ansatz, wahrscheinlich zu kompliziert. Das Problem an dem Konstrukt ist einfach: Welche Variable kommt an die Stelle "xyz". Es besteht ja keine Verbindung von $anzahl zu $ordner. bearbeitet 15. November 2013 von Christoph_A4
Dukel 468 Geschrieben 15. November 2013 Melden Geschrieben 15. November 2013 $ordner ist ja auch dein Array. Dein aktuelles Objekt in der Schleife ist $profilordner. Achtung! $profileordner ist ein Objekt, du brauchst eine Eigenschaft (Name oder FullName) davon. Das (Get-ChildItem $profilordner.FullName -Recurse) in Zeile 4 kannst du sparen. Du willst ja nicht alles ausgeben sondern nur die Anzahl wissen. Ich hätte das etwas vereinfacht ($xyz darfst du selbst noch herausfinden): foreach ($profilordner in (Get-ChildItem "\\c:\_terminalserverprofile_test\*\Eigene Dateien\BriefkorbTS" )) { if (((Get-ChildItem $profilordner.FullName -Recurse).count) -gt 4){ $xyz | Set-Content -Path "c:\test.csv" }}
Christoph_A4 10 Geschrieben 18. November 2013 Autor Melden Geschrieben 18. November 2013 Hallo Dukel, die Variable xyz ist nun aber das zentrale Problem an der ganzen Sache oder sehe ich das falsch? Welcher content kann denn jetzt in die csv geschrieben werden? Vielleicht ist es besser zu erklären anhand eines konkreten Beispiels: Es existieren die Ordner c:\_terminalserverprofile_test\Testordner1\Eigene Dateien\BriefkorbTS c:\_terminalserverprofile_test\Testordner2\Eigene Dateien\BriefkorbTS c:\_terminalserverprofile_test\Testordner3\Eigene Dateien\BriefkorbTS c:\_terminalserverprofile_test\Testordner4\Eigene Dateien\BriefkorbTS c:\_terminalserverprofile_test\Testordner5\Eigene Dateien\BriefkorbTS Im Ordner "BriefkorbTS" des Testordners 2 und 5 liegen mehr als 4 Dateien. Als Ausgabe in dieser csv würde ich mir folgendes wünschen: c:\_terminalserverprofile_test\Testordner2\Eigene Dateien\BriefkorbTS c:\_terminalserverprofile_test\Testordner5\Eigene Dateien\BriefkorbTS
Dukel 468 Geschrieben 18. November 2013 Melden Geschrieben 18. November 2013 foreach($item in (get-childitem c:\)){ $item | fl * break } Alles was du da siehst sind Eigenschaften, die du nutzen und rausschreiben kannst.
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden