daniels
Goto Top

Letzten 50 Zeilen einer TXT auslesen und neue TXT uploaden

Hallo zusammen,
ich habe eine Logfile.txt in der etwa 3000 Zeilen enthalten sind. Jede Zeile sieht folgendermaßen aus:

Logfile.txt:
"2007-06-17 yanu_bigstar by alpha-1"

Jetzt möchte ich eine neue "Short_Logfile.txt" erstellen die nur die letzten 50 Einträge der Logfile.txt enthält.

Diese möchte ich dann auf einen anderen FTP hochladen.


Bis jetzt habe ich folgendes (es wird nur die Datei auf den FTP kopiert, aber nicht bearbeitet):

upload1.txt:
Username@clancid.com
password
mput Logfile.txt
bye

pao.batch
ftp -i -s:upload1.txt clancid.com


Kann mir da jemand weiterhelfen?
Gleich vorne weg, ich habe noch kaum Erfahrung mit batch Dateien face-smile

Danke schonmal

Daniel

Content-Key: 61602

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

Printed on: April 18, 2024 at 16:04 o'clock

Member: Biber
Biber Jun 18, 2007 at 00:20:40 (UTC)
Goto Top
Moin DanielS,

willkommen in Forum.

Ich würde folgende Zeilen in Deine Batchdatei einschieben (oder in einem separaten Schritt machen):

:: -----snipp MakeALastLinesLog.bat
@echo off & Setlocal 
for /f "delims=:" %%i in ('findstr /n . Logfile.txt') do set /a "max=%%i"  
:: Jetzt ist %max% z.B. = 3000
Set /a max=max - 50
::  Jetzt ist %max% z.B. = 2950... und diese 2950 Zeilen überspringen wir
More +%Max% LogFile.txt >ShortLogFile.txt
:: -----snapp MakeALastLinesLog.bat

Dein Gesamtgewusel müsste dann sinngemäß so aussehen:
---upload1.txt:
Username@clancid.com
password
mput ShortLogfile.txt
bye

::-----pao.batch
Call <i>Lw:\pfad\</i>MakeALastLinesLog.bat
:: ...oder statt des CALLs den Schnipsel von oben hier rein setzen..
ftp -i -s:upload1.txt clancid.com

So kannst Du das frisch erzeugte ShortLogFile.txt anstelle des LogFiles hochschicken.

Vor "LogFile.txt" bzw. "ShortLogFile.txt" musst Du ggf. noch einen Pfad ergänzen.
Soll ja nur eine Skizze sein und ist wie immer ungetestet.

Grüße
Biber
[Edit] Habe den von bastla (THX!) behobenenen Tippfehler im Source ausgebessert.
Also nicht über die folgenden Kommentare wundern. Ich hatte oben fehlerhaft gepostet:
... for /f "delims=:" %%i in ('findstr /n . Logfile.txt) do set /a "max=%%i"
[/Edit]
Member: DanielS
DanielS Jun 18, 2007 at 09:51:47 (UTC)
Goto Top
Danke schonmal für die Mühe, ich habe alle 3 Dateien auf meinem Desktop, aber leider kommt:

Die Datei "'findstr /n . Logfile.txt" kann nicht gefunden werden.

Obwoh diese auch auf meinem Desktop ist.

Grüße
Daniel
Member: bastla
bastla Jun 18, 2007 at 10:31:13 (UTC)
Goto Top
Hallo DanielS!

Wenn Du in der folgenden Zeile
for /f "delims=:" %%i in ('findstr /n . Logfile.txt<u>'</u>) do set /a "max=%%i"  
nach Logfile.txt das schließende Apostroph einbaust, sollte das klappen.

Grüße
bastla
Member: DanielS
DanielS Jun 18, 2007 at 10:46:13 (UTC)
Goto Top
wahnsinn - ich danke dir vielmals, ihr habt mir echt sehr weitergeholfen.
Tolles Forum!

Grüße
Ein glücklicher Daniel