Benutzer mit den meisten Antworten
Dateien in einem Verzeichnis zählen - Gleiche Zeichen am Anfang ignorieren

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