Jump to content

Jeweils Dateien in Ordnern zählen, bei Überschreitung einer bestimmten Anzahl Ereignis auslösen


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

Empfohlene Beiträge

Geschrieben (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 von Christoph_A4
Geschrieben (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 von Christoph_A4
Geschrieben

$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"   }}
Geschrieben

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

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

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...