Powershell - Automatisierung in der Dateiablage
Hallo Zusammen,
wir haben ein kleine Anwendung die automatisch Daten wegsortiert. Diese soll nun durch eine Powershell + Aufgabenüberwachtung ersetzt werden.
Was soll passieren?
1) aktive Auftragsnummern werden in Array eingelesen (MS SQL-Server) [erledigt]
2) Dateiname (string) wird mit Like auf Vorhandensein einer Nummer prüfen
3) in Verzeichnis verschieben [erledigt]
Nun habe ich eine Frage zu Schritt 2:
Lasse ich nun durch alle Auftragsnummern im Array ein For-Each-Schleife laufen und wenn ich einen Treffer habe break und dann Schritt 3?
Alternative wäre, im String auf eine Zahl zu casten und diese dann im Array zu suchen?
Welche Variante wird mir eine höhere Performance bieten? Es geht eher um eine kleine Menge an Auftragsnummern (5.000).
Viele Grüße,
John
wir haben ein kleine Anwendung die automatisch Daten wegsortiert. Diese soll nun durch eine Powershell + Aufgabenüberwachtung ersetzt werden.
Was soll passieren?
1) aktive Auftragsnummern werden in Array eingelesen (MS SQL-Server) [erledigt]
2) Dateiname (string) wird mit Like auf Vorhandensein einer Nummer prüfen
3) in Verzeichnis verschieben [erledigt]
Nun habe ich eine Frage zu Schritt 2:
Lasse ich nun durch alle Auftragsnummern im Array ein For-Each-Schleife laufen und wenn ich einen Treffer habe break und dann Schritt 3?
Alternative wäre, im String auf eine Zahl zu casten und diese dann im Array zu suchen?
Welche Variante wird mir eine höhere Performance bieten? Es geht eher um eine kleine Menge an Auftragsnummern (5.000).
Viele Grüße,
John
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 382573
Url: https://administrator.de/contentid/382573
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
2 Kommentare
Neuester Kommentar
Welche Variante wird mir eine höhere Performance bieten?
Teste doch einfach selbst mit "Measure-Command" . Beispiel$dateiname = "Hallo das ist ein 888 test.jpg"
[array]$numbers = 1..5000
# Extrahieren von Value und Array Check
(Measure-Command {
[regex]::Match($dateiname,'\d+').Value -in $numbers
}).TotalMilliseconds
# Mit Regex
(Measure-Command {$dateiname -match ( $numbers -join '|')}).TotalMilliseconds
# Mit Schleife
(Measure-Command {
$numbers | %{
if($dateiname -like "*$_*"){
return
}
}
}).TotalMilliseconds