ChaS 0 Geschrieben 27. August 2023 Melden 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
Beste Lösung BOfH_666 586 Geschrieben 27. August 2023 Beste Lösung Melden 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
ChaS 0 Geschrieben 27. August 2023 Autor Melden 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
BOfH_666 586 Geschrieben 27. August 2023 Melden 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.
ChaS 0 Geschrieben 27. August 2023 Autor Melden Geschrieben 27. August 2023 ja da hast du Recht. Würdest du es im PS oder in einer Datenbank (Access) machen.
ChaS 0 Geschrieben 27. August 2023 Autor Melden 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.
BOfH_666 586 Geschrieben 27. August 2023 Melden 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.
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