Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
al3x

Datumsfeld aus csv auslesen

Empfohlene Beiträge

Hallo zusammen,

 

folgende Situation, ich habe einen Ordner mit mehreren .csv mit gleichem Aufbau, an der x. Stelle in Zeile 1 steht das Datum jjjjmmd (In allen csv gleich).

Dieses möchte ich gern auslesen (Batch oder PS) und in eine Variable packen, damit ich im Anschluß alle csv´s zippen und mit dem ausgelesenen Datum benennen kann.

 

Der 2. Teil ist klar, aber ich weiß nicht wie ich an das Datumsfeld komme. Eventuell mit findstr?

 

Kann mir hier jemand helfen?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

ja, es steht immer an der gleichen Stelle. Es handelt sich um eine EDI-Rechnung mit Absender;Empfänger;Adresse; etc......

Bisher habe ich immer das Systemdatum genommen: (for /F "tokens=1-4 delims=." %%i in ('date /t') DO SET date=%%k%%j%%i​)

 

...dies setzt allerdings voraus, dass der Vorgang immer am gleichen Tag durchgeführt wird. Ich dachte nun es sei geschickter, das Datum einfach aus der csv auszulesen und beim Erstellen der zip dann das Rechnungsdatum als Dateiname zu verwenden (statt das Systemdatum zum Erstellungszeitpunkt).

 

Hab aber keine Idee, wie ich vorgehen muss.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Du kannst die Dateien als CSV (ConvertFrom-Csv) einlesen und hast alle Spalten als Wert verfügbar.

 

$csv = get-content /path/to/file.csv | ConvertFrom-Csv

$csv.Datum

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wenn es sowieso keine Header gibt, kannst Du auch einfach die erste Zeile einlesen, die entsprechende Stelle mittels SubString Methode rausfräsen und das einer Variable zuweisen. Also so ungefähr:

$DatumsString = (Get-Content -Path 'voller Pfad zu Deiner CSV-Datei' | Select-Object -First 1 ).SubString(37,8)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

 

Wenn es sowieso keine Header gibt, kannst Du auch einfach die erste Zeile einlesen, die entsprechende Stelle mittels SubString Methode rausfräsen und das einer Variable zuweisen. Also so ungefähr:

$DatumsString = (Get-Content -Path 'voller Pfad zu Deiner CSV-Datei' | Select-Object -First 1 ).SubString(37,8)

 

ok hier komm ich zumindest mal an einen Wert, allerdings zeigt er mir das 37. Zeichen und nicht die 37. Spalte

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

02;1;1;STCK;15449.4;15449.4;308988;19;2935.39;5500002194;;;85477;;Modell4711;981080;20171110;;;;;;

 

 

Das ist zwar die 2. Zeile, aber hier steht auch ein Datum. Wäre in dem Fall, sofern ich mich nicht verzählt habe der 17. Wert.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×