ChaS 0 Geschrieben 27. August 2023 Melden Teilen Geschrieben 27. August 2023 (bearbeitet) Hallo zusammen, ich habe eine Inventarliste mit ca. 1200 Zeilen und ca. 190KB. SIMKARTENNR;TELEFONNR;INVENTARNR;TYPE;BETRIEBSVERANTWORTLICH;ARBEITSPLATZ;SERIENNUMMER;BEMERKUNG 5141241376;18133281;80203;nur SIM-Karte;zuständige Person und Aufgabe;;;div. Anmerkungen Simkartennr ist im Inventar eindeutig. und ein Verzeichnis mit ca. 30 Dateien (Abrechnungsdaten) und gesamt ca. 500MB. ein findstr /C:"5141241376" *.txt in allen Dateien suche nach Simkartennr benötigt ca. unter 1 Sekunde. kann man das Script etwas schneller machen? läuft derzeit bereits gefühlte 45minuten und ist noch nicht fertig. $InventarCSV = Import-Csv C:\temp\InventarSIM.csv -Delimiter ";" -Encoding Default foreach($Inventar in $InventarCSV){ $Inventar.simkartennr $treffer = Get-ChildItem c:\temp\*.txt | Select-String -Pattern $Inventar.SIMKARTENNR if ($treffer -eq $null){ write-host $Inventar.SIMKARTENNR -ForegroundColor Yellow } } bearbeitet 27. August 2023 von ChaS Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 27. August 2023 Beste Lösung Melden Teilen Geschrieben 27. August 2023 (bearbeitet) Hallo und Willkommen im MCSEboard. Mit Deinem Code klapperst Du für jede einzelne Zeile Deiner Inventarliste ALLE Text-Dateien im Verzeichnis 'C:\temp' ab. Wenn es 30 Dateien sind, prüfst Du also 1.200 mal 30 Dateien. Es wird also 36.000 mal eine Datei gelesen. Da würde ich einen anderen Ansatz versuchen. Wie ist denn die Beziehung zwischen Simkartennr und Dateien mit Abrechnungsdaten? Ist das 1:1? Falls "ja", würde ich mir einen "Index" mit den Dateien der Abrechnungsdaten mit den jeweiligen Simkartennr aufbauen und diesen dann z.B. mit einem Compare-Object mit der Inventarliste vergleichen. Somit brauchst Du die 30 Dateien nur einmal abklappern und es sollte deutlich schneller laufen. bearbeitet 27. August 2023 von BOfH_666 Zitieren Link zu diesem Kommentar
ChaS 0 Geschrieben 27. August 2023 Autor Melden Teilen Geschrieben 27. August 2023 es sind 1:n Beziehungen. 1x im Inventar jedes Monat eine Handy Rechnung mit zig. Aufstellungen. ich habe jetzt beim testen noch etwas herausgefunden. So wie es aussieht liegt es an den Treffern bei denen es in den Rechnungen Daten gibt. Diese benötigen ca. 3,5 Sekunden, daher dauert es scheinbar etwas (!) länger. kein Treffer vorhanden = ca. 1,5 Sekunden viele Treffer gefunden = ca. 3,8 Sekunden das erklärt das Problem etwas. Ist aber eh nur eine einmalige adhoc Auswertung, da ich herausfinden möchte ob wir im Inventar Leichen haben die nicht mehr abgerechnet werden. DANKE Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 27. August 2023 Melden Teilen Geschrieben 27. August 2023 vor 18 Minuten schrieb ChaS: es sind 1:n Beziehungen. 1x im Inventar jedes Monat eine Handy Rechnung mit zig. Aufstellungen. Es gibt also pro Rechnung mehrere Simkartennummern? Dann würde ich mir erst recht einen Index erstellen, der die Simkartennummern jeder Datei enthält und diesen dann mit den Inventardaten abgleichen. Wenn die Text-Dateien mit den Abrechnungsdaten ein definiertes Format haben, sollte das kein Problem sein. Zitieren Link zu diesem Kommentar
ChaS 0 Geschrieben 27. August 2023 Autor Melden Teilen Geschrieben 27. August 2023 ja da hast du Recht. Würdest du es im PS oder in einer Datenbank (Access) machen. Zitieren Link zu diesem Kommentar
ChaS 0 Geschrieben 27. August 2023 Autor Melden Teilen Geschrieben 27. August 2023 Olaf, hast du zufällig ein Musterscript bzw. ein Beispiel in deiner Sammlung wie ich im PS aus den Textdatei einen Index erstellen kann. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 27. August 2023 Melden Teilen Geschrieben 27. August 2023 Da ich mit Access genau Null Erfahrung habe und Du gesagt hast, dass es sowieso mehr oder weniger eine einmalige Aufgabe ist, würde ich es definitiv in PowerShell machen. vor 5 Minuten schrieb ChaS: im PS aus den Textdatei einen Index erstellen kann. Das hängt von der Struktur der Text-Dateien ab. Ich würde vermutlich sogar soweit gehen, zu versuchen, die Daten gleich in einem Format zu bekommen, welches für die automatische Verarbeitung besser geeignet ist als Text-Prosa. Am besten z.B. CSV. Bei Business-Verträgen würde ich so einen Service erwarten. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.