schulle2
Goto Top

Txt-Datei nach bestimmten Wert durchsuchen, wenn positiv, alles davorhängende löschen

Hallo zusammen,


ich bin grade auf der Suche nach einem Lösungsansatz, wie ich am besten ein kleines Problem von mir löse.
Ich hoff mir kann da jmd helfen:

Ich habe eine Log File log.txt a la:


12.05.2006

sfalhsdjfhasldncvdbcvljkcbnv1

13.05.2006

sfalhsdjfhasldncvdbcvljkcbnv2

15.05.2006

sfalhsdjfhasldncvdbcvljkcbnv3

16.05.2006

sfalhsdjfhasldncvdbcvljkcbnv4

17.05.2006

sfalhsdjfhasldncvdbcvljkcbnv4

Nun will ich per Batch oder VBS die File nach einem Datum (älter 2 Tage) durchsuchen.

Sprich am 17.05 führe ich das Script aus.
Das durchsucht die log, ob es einträge älter 15.05 gibt und löscht gegebenfalls diese.

Hat jmd eine Idee wie man das am betsen realisieren könnte?
Wäre für jede Hilfe sehr dankbar!

Content-ID: 54746

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

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

miniversum
miniversum 22.03.2007 um 19:35:16 Uhr
Goto Top
So gehts:
@echo off
set string="15.05."  
set "infile=datei.txt"  

FOR /F "delims=" %%i in ('find /n /i %string% %infile%') do set nummer=%%i  
set /a nummer=%nummer%-1
more +%nummer% %infile%>tempfile.txt
del %infile%
ren tempfile.txt %infile%

miniversum
schulle2
schulle2 23.03.2007 um 08:43:59 Uhr
Goto Top
Super!
Vielen vielen Dank!
genau so geht es!
schulle2
schulle2 23.03.2007 um 10:54:42 Uhr
Goto Top
kurze frage noch....
wenn das datum nicht vohanden ist, leert er das komplette dokument.
gibts da noch irgendwie n weg, wie ich das umgehen kann?
miniversum
miniversum 23.03.2007 um 11:37:59 Uhr
Goto Top
Hier hab ich diesen Fehler abgefangen (unggetestet):
@echo off
set string="15.05."  
set "infile=datei.txt"  

FOR /F "delims=" %%i in ('find /n /i %string% %infile%') do set nummer=%%i  
if "%nummer:~0,5%" equ "-----" (  
echo %string% nicht in "%infile%" vorhanden  
pause
) else (
set /a nummer=%nummer%-1
more +%nummer% %infile%>tempfile.txt
del %infile%
ren tempfile.txt %infile%
)

miniversum
Biber
Biber 23.03.2007 um 11:48:33 Uhr
Goto Top
Moin,

nur kleine Korrektur eines Flüchtigkeitsfehlers:
Ändere: if "%nummer:0,5%"="-----"
in: if "%nummer:0,5%"=="-----"

"IF"-Prüfung auf Gleichheit im CMD-Interpreter mit doppeltem Gleichheitszeichen,
Zuweisung eines Wertes mit SET und einfachem Gleichheitszeichen.

[Ansonsten denke ich, der Beitrag kann auf "Gelöst" gesetzt werden?]

Grüsse
Biber
schulle2
schulle2 26.03.2007 um 13:44:02 Uhr
Goto Top
dank euch!


ich habe das script nun noch ein wenig erweitert.
In meinen Logfiles wird das Datum nach dem Schema gespeichert:

20-MÄR-2007

Alles schön und gut. Es läuft, ... Nur nicht beim Monat März wegen dem Sonderzeichen "Ä".
Ich habs schon mit zigg verschiedenen Möglichkeiten probiert, jedoch nichts gescheites gefunden.
Könntet ihr mir vielleicht da bitte nochmal helfen? ;)


@echo OFF
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%


if %monat%==01 set monat=Nov
if %monat%==02 set monat=Dez
if %monat%==03 set monat=Jan
if %monat%==04 set monat=Feb
if %monat%==05 set monat=Mär
if %monat%==06 set monat=Apr
if %monat%==07 set monat=Mai
if %monat%==08 set monat=Jun
if %monat%==09 set monat=Jul
if %monat%==10 set monat=Aug
if %monat%==11 set monat=Sep
if %monat%==12 set monat=Okt

echo %tag%.%monat%.%jahr%


set suchstring=%tag%.%monat%.%jahr%
set "infile=listener_all.LOG"

FOR /F "delims=" %%i in ('find /n /i %suchstring% %infile%') do set zeile=%%i
if "%zeile:~0,5%" == "-----" (
echo %suchstring% nicht in "%infile%" vorhanden

) else (
set /a zeile=%zeile%-1
more +%zeile% %infile%>tempfile.txt
del %infile%
ren tempfile.txt %infile%
)
Biber
Biber 26.03.2007 um 13:53:40 Uhr
Goto Top
Moin schulle2,

dazu musst Du unter Windows-GUI-Krams (z.B. Explorer) und dem Batch die gleichen Codepages sicherstellen.

"Windows" verwendet hier (wo datt Forum steht) die Codepage 1252; die CMD.exe verwendet meistens die Codepage 850 oder 437.

Überprüfen am Cmd-Prompt mit dem Befehl CHCP (==Change Codepage).

Einstellen einer anderen Codepage am Prompt/im Batch mit "CHCP 1252" oder CHCP "850" BEVOR irgendetwas mit Umlauten gelesen oder in Dateien geschrieben wird.

Unter "Umlaut CHCP Batch" sollte hier im Forum etwas darüber zu finden sein.

Gruss Biber
schulle2
schulle2 26.03.2007 um 14:03:35 Uhr
Goto Top
danke für deine antwort.


es geht ;)