none
Dateien in einem Verzeichnis zählen - Gleiche Zeichen am Anfang ignorieren RRS feed

  • Frage

  • Hallo,

    ich habe eine kleine Herausforderung und bisher leider keine Lösung gefunden.

    Ich möchte Dateien zählen, die in einem Verzeichnis liegen. Die Dateien sind z.B. folgendermaßen aufgebaut:

    UserID.Domäne.VIA.Client.txt

    Um alle Dateien zu zählen würde schon einfach dies genügen: (Get-ChildItem <PATH> "*.VIA.*.txt").count

    Es kann vorkommen, dass der Part vor ".VIA." identisch ist. Z.B.

    Horst.HEIM.VIA.Client123.txt

    Horst.HEIM.VIA.Client456.txt

    Ziel wäre es, dass in diesem Fall .count den Wert "1" ausgegeben wird.

    Hat jemand ein einfache Idee?

    Danke & Grüße

    See Bastian

    Dienstag, 4. Oktober 2016 10:53

Antworten

  • Hi,

    ich denke, ich habe die Antwort gefunden:

    (Get-ChildItem <PATH> |Group-Object {$_.Name -split '.VIA.' |select -First 1} -NoElement).count


    • Als Antwort markiert See Bastian Dienstag, 4. Oktober 2016 11:37
    • Bearbeitet See Bastian Dienstag, 4. Oktober 2016 11:37
    Dienstag, 4. Oktober 2016 11:37

Alle Antworten

  • Vielleicht verdeutlichst Du uns das Problem, indem Du den Code postest, den Du schon hast. Wie Du Dateien mit einem gleichen Namensbestandteil zählst, weißt Du ja offenbar schon.

    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    Dienstag, 4. Oktober 2016 11:03
  • Hi,

    genau an dieser Stelle komme ich ja nicht weiter. Code habe ich dafür nicht, da ich mir nicht wirklich vorstellen kann, wie dieser aussehen soll :(

    Dienstag, 4. Oktober 2016 11:10
  • Hi,

    ich denke, ich habe die Antwort gefunden:

    (Get-ChildItem <PATH> |Group-Object {$_.Name -split '.VIA.' |select -First 1} -NoElement).count


    • Als Antwort markiert See Bastian Dienstag, 4. Oktober 2016 11:37
    • Bearbeitet See Bastian Dienstag, 4. Oktober 2016 11:37
    Dienstag, 4. Oktober 2016 11:37
  • Spitze! Ich bin stolz auf Dich. Und wenn Du beim nächsten Mal noch den Code als Code formatierst, bekommst Du die volle Punktzahl!  ;-)

    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    Dienstag, 4. Oktober 2016 12:33
  • Noch einfacher wäre
    (Get-ChildItem <PATH> |Group-Object {$_.Name -replace '\.VIA\..*'} -NoElement).count
    Da es dir nur auf den ersten Teil ankommt, kannst du auch einfach alles hinter ".VIA." entfernen. Dabei steht ".*" für eine beliebige Zeichenkette. Da sowohl -split als auch -replace mit Regulären Ausdrücken arbeiten, ist es etwas sicherer, den Punkt zu escapen. Daher kommen die "\." statt einem einfachen Punkt. Es wäre sonst ein Problem, wenn jemand einen Namen mit "VIA" besitzt.
    Dienstag, 4. Oktober 2016 12:38
  • Danke :-)
    Dienstag, 4. Oktober 2016 13:30