makroll10
Goto Top

Datensätze vom Vortag per Batch aus Datei auslesen

Hallo,
ich versuche gerade per Batch eine Vergleichsoperation mit dem Vortagesdatum hinzubekommen. Leider bisher erfolglos.

Die Ausgangsdaten der Datei "kst_wechsel.txt" sehen z.B. wie folgt aus:

1240503/721-702,995000006 ,26.02.18,05:57, 1
1240503/721-788,995000006 ,26.02.18,05:58, 1
1240504/731-708,995000006 ,27.02.18,06:01, 1

Das angenommene aktuelle Datum ist der 27.02.18 und bisher wurden auch nur die aktuellen Datensätze benötigt und mit der u.a. Funktion erfolgreich in die Datei "kst_wechsel_akt0.txt" ausgegeben.

for /f "delims=" %%i in (d:\temp\kst_wechsel.txt) do (

set "zeile=%%i"
set "vergl=!zeile:~27,8!"
set "Datum=%date:~0,2%.%date:~3,2%.%date:~8,2%"

if "!Vergl!"=="!Datum!" echo %%i>>d:\temp\kst_wechsel_akt0.txt
)

Nun soll mit einem anderen Batch nach den Datensätzen des Vortages, also im Beispiel nach den Datensätzen vom 26.02.18 gesucht und ebenfalls eine Dateiausgabe erzeugt werden.

Versucht hatte ich das u.a. mit:

set /a "d=%date:~0,2%-1"
set "mj=%date:~3,2%.%date:~8,2%"
set "Datum=%d%.%mj%"

Isoliert betrachtet wird zwar mit diesem Batch der 26.02.18 errechnet, jedoch klappt das nicht mit dem Vergleich. Vielleicht hat ja jemand eine Idee...

Vielen Dank und Gruß
Markus

Content-ID: 366282

Url: https://administrator.de/contentid/366282

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

colinardo
Lösung colinardo 27.02.2018 aktualisiert um 18:03:15 Uhr
Goto Top
Servus Markus.
als Batch
@echo off & setlocal
:: Datei
set "file=d:\temp\kst_wechsel.txt"  

:: temporaere Datums-Berechnung
set "gTemp=%Temp%\calc.vbs"  
echo g=DateAdd("d",-1,Date):WScript.Echo Right("0" ^&Day(g),2)^&"."^&Right("0" ^& Month(g),2)^& "." ^&Right(Year(g),2)>"%gTemp%"  
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i  
del "%gTemp%"  

:: Datensätze von gestern finden und in Datei schreiben
findstr /c:",%G%," "%file%" >"d:\temp\kst_wechsel_akt0.txt"  
oder alternativ auch als Powershell-Einzeiler:
(gc 'd:\temp\kst_wechsel.txt') -match ",$((get-date).AddDays(-1).ToString('dd\\.MM\\.yy'))," | sc 'd:\temp\kst_wechsel_akt0.txt'  
Grüße Uwe
makroll10
makroll10 28.02.2018 um 17:24:05 Uhr
Goto Top
Hallo Uwe,
habe die Batch-Variante in den Prozess eingebaut...Und es läuft perfekt! Vielen Dank nochmal.
Gruß Markus