Fortlaufende Nummer aus csv überprüfen?
Moinsen,
in einer Datei sind Rechnungen mit der Rechnungsnummer im Dateinamen enthalten. Um die evt. Lücken in den Nummern zu überprüfen, hab ich diese in einer csv abgespeichert.
Mein Träumchen wäre für die GoBD eine weitere csv mit den fehlenden Rechnungsnummern. Bisher sieht es so aus:
rechnungsnummern.csv
1001
1002
1003
1007
1008
Haben würde ich gerne dann die folgende csv:
fehlendeReNr.csv
1004
1005
1006
Ich hab schon mehrere Ansätze versucht, aber mit meinem (bescheidenen) Wissen komme ich nicht wirklich weiter. :/
Hat jmd Erbarmen? ;)
in einer Datei sind Rechnungen mit der Rechnungsnummer im Dateinamen enthalten. Um die evt. Lücken in den Nummern zu überprüfen, hab ich diese in einer csv abgespeichert.
Mein Träumchen wäre für die GoBD eine weitere csv mit den fehlenden Rechnungsnummern. Bisher sieht es so aus:
rechnungsnummern.csv
1001
1002
1003
1007
1008
Haben würde ich gerne dann die folgende csv:
fehlendeReNr.csv
1004
1005
1006
Ich hab schon mehrere Ansätze versucht, aber mit meinem (bescheidenen) Wissen komme ich nicht wirklich weiter. :/
Hat jmd Erbarmen? ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 667009
Url: https://administrator.de/contentid/667009
Ausgedruckt am: 25.11.2024 um 10:11 Uhr
4 Kommentare
Neuester Kommentar
Moin,
ist das der komplette Ihnalt deiner CSV-Datei? In dem Fall würde ich mit Get-Content arbeiten.
Gruß Thomas
ist das der komplette Ihnalt deiner CSV-Datei? In dem Fall würde ich mit Get-Content arbeiten.
$File = [int[]](Get-Content 'C:\Test\rechnungsnummern.csv') | sort
1001..$File[-1] | Where-Object {$File -NotContains $_} | Set-Content 'C:\Test\fehlendeReNr.csv'
Gruß Thomas
tio.run
Gruß w.
int]$inhalt = gc rechnungen.csv
compare-object ($inhalt..$inhalt[-1]) $inhalt -Passthru | out-file fehlende.csv
Mit Batch ist sowas nur schwer und mit schlechter Performance lösbar
Dann bräuchtest du nur nach beim Aufruf des Skripts die Nummer als Argument anhängen.
Gespeichert werden die Dateien von der Wawi bsp. so:
"Rechnung_2021-04-09_134557.pdf"
Über eine DOS-Batch bekomme ich dann die eigentliche Rechnungsnummer in eine csv.
mein Rat wäre, lass das Ganze mit Batch gleich bleiben und extrahiere die Nummern auch gleich mit Powershell"Rechnung_2021-04-09_134557.pdf"
Über eine DOS-Batch bekomme ich dann die eigentliche Rechnungsnummer in eine csv.
# Pfad zum Rechnungsordner
$Dir = 'C:\Test'
# Nummern extrahieren und sortieren
$nrn = [int[]]((Get-ChildItem -File -Name "$Dir\Rechnung*.pdf") -Replace '^.*\D(\d+)\.pdf','$1') | sort
# Fehlende Nummern ausgeben
$nrn..$nrn[-1] | Where-Object {$nrn -NotContains $_} | Set-Content 'fehlendeReNr.csv'
Nun muß ich noch die Startnummer (134557) als Variable in das PS-Script übergeben.
Wenn du es wie oben machst, ist das ja eigentlich nicht mehr notwendig, aber eine Variable übergeben geht mit Powershell ganz leicht. Du kannst entweder die Standardvariable $args nutzen, oder eine eigene Variable definieren, indem du am Anfang des Skripts mit Param eine Variable definierstParam( [int]$Startnr )