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-Key: 366282

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

Printed on: May 7, 2024 at 02:05 o'clock

Member: colinardo
Solution colinardo Feb 27, 2018 updated at 17:03:15 (UTC)
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
Member: makroll10
makroll10 Feb 28, 2018 at 16:24:05 (UTC)
Goto Top
Hallo Uwe,
habe die Batch-Variante in den Prozess eingebaut...Und es läuft perfekt! Vielen Dank nochmal.
Gruß Markus