razfaz
Goto Top

Letzten 7 Zeilen kopieren und in eine neue Datei einfügen.

Hallo zusammen,

ich habe eine Text Datei.
Dort möchte ich jeden Tag (Geplanter Task) immer die letzten 7 Zeilen kopieren und in eine neue txt Datei einfügen.
Diese neue Datei soll dann per E-Mail automatisch an einen Empfänger verschickt werden. Diese Datei kann jeden Tag überschrieben werden.
Am besten mit einer bat Datei. Wie setzte ich das am besten um?
Vielen Dank schon mal für Eure Unterstützung.

Content-Key: 154837

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

Printed on: April 19, 2024 at 00:04 o'clock

Member: user132
user132 Nov 11, 2010 at 08:50:50 (UTC)
Goto Top
Morgen,

das finden von den letzten 7 zeilen machst du mit "findstr /?".
Das Erstellen der neuen Datei mit << >> (SET /?) der logischen Verschiebung.
Das verschicken kannst du mit der "blat.exe" machen.
Hinzufügen eines Task kannst mit "AT /?" erledigen.

Gruß
Member: Razfaz
Razfaz Nov 11, 2010 at 08:59:45 (UTC)
Goto Top
Danke, da ich mich aber auf diesem Gebiet nicht gut auskenne, wollte ich fragen, wie der Code dazu ausehen würde.
Danke!
Mitglied: 60730
60730 Nov 11, 2010 at 09:03:11 (UTC)
Goto Top
Moin,

REM Die Zeilen auslesen und Variable für die Zeilennummer setzen
for /f "tokens=1 delims=:" %%a in ('findstr /n "." "laufwerk:\pfad\dateiname"') do set kplt=%%a  

REM ziehe  7 ab
set /a sieben=%kplt%-7
REM zeig mir die letzten (zwerge)
more +%sieben% "laufwerk:\pfad\dateiname">"laufwerk:\pfad\dateiname2"  

Gruß

edit hab mal eine zweite Variable genommen (kplt -7 sollte nicht kplt heissen) /edit
edit /² waren dann doch insgesamt 6 zusätzliche " - hätte man[n] auch als Variable nehmen können ala:

set filetoworkwith="%userprofile%Desktop\Test\123456.txt"
for /f "tokens=1 delims=:" %%a in ('findstr /n "." "%filetoworkwith%"') do .....
Member: Stormbob
Stormbob Nov 11, 2010 at 09:09:33 (UTC)
Goto Top
Powershell würde ich klappen face-smile

Get-Content c:\test.txt | Select-Object -last 7

oder mit den GNU32 Utilities, dort dann den tail-Command

tail -n 7 c:/test.txt
Member: Razfaz
Razfaz Nov 11, 2010 at 09:11:35 (UTC)
Goto Top
Danke, aber bei Abruf erschein ein Fehler:
Auf die Datei C:\Dokumente und Einstellungen\xxx\Desktop\Test\+ kann nicht
zugegriffen werden.
Mitglied: 60730
60730 Nov 11, 2010 at 09:15:12 (UTC)
Goto Top
Zitat von @Razfaz:
Danke, aber bei Abruf erschein ein Fehler:
Auf die Datei C:\Dokumente und Einstellungen\xxx\Desktop\Test\+ kann nicht zugegriffen werden.

ok - dann mal langsam....

* wtf hat eigentlich mit dieser sinnigen Testmethode angefangen, Testdateien auf dem Desktop zu nehmen?

Anyway - wäre bei jedem Pfad/Dateinamen mit leerzeichen das gleiche. Kauf ich halt noch zwei " dazu....

"laufwerk:\pfad\datei name"

Gruß
Member: bastla
bastla Nov 11, 2010 at 09:17:36 (UTC)
Goto Top
Hallo Razfaz!

Dann versuch es einmal mit der etwas behübschten Variante:
@echo on & setlocal
set "Ein=laufwerk:\pfad\dateiname"  
set "Aus=laufwerk:\pfad\dateiname2"  
REM Die Zeilen auslesen und Variable für die Zeilennummer setzen
for /f "tokens=1 delims=:" %%a in ('findstr /n "^" "%Ein%"') do set kplt=%%a  

REM ziehe  7 ab
set /a sieben=%kplt%-7
REM zeig mir die letzten (zwerge)
(if %sieben% gtr 0 (
    more +%sieben% "%Ein%"  
) else (
    type "%Ein%"  
))>"%Aus%"  
Grüße
bastla

P.S.: @t-mo:
Kauf ich halt noch zwei " dazu....
... und verkauf noch ein Leerzeichen face-wink
Member: Razfaz
Razfaz Nov 11, 2010 at 09:21:58 (UTC)
Goto Top
face-smile
Ich habe das ganze mal dierekt auf C: verschoben.
Die FM kommt aber immer noch:

So siehts bei mir aus:

for /f "tokens=1 delims=:" %%a in ('findstr /n "." C:\Test\test.txt') do set kplt=%%a
set /a kplt=%kplt%-14
more + %kplt% C:\Test\test.txt>C:\Test\Test1\test1.txt

FM: C:\Test>more + 54 C:\Test\test.txt 1>C:\Test\Test1\test1.txt
Auf die Datei C:\Test\+ kann nicht zugegriffen werden.

Wo ist da der Fehler
Mitglied: 60730
60730 Nov 11, 2010 at 09:24:54 (UTC)
Goto Top
[OT]
@ Bastla: ein leerezeichen? meine kopfä issse leer wie Flasche Bier, wo denn?
07 REM ziehe 7 ab

Da bin ich aber froh, dass er nicht die letzten 123 Zeilen auslesen wollte, sowiel R.E.M kann ja keiner am Stück hören face-wink
[/OT]

Gruß
Member: Razfaz
Razfaz Nov 11, 2010 at 09:25:08 (UTC)
Goto Top
@bastla:

Perfekt so hats geklappt, DANKE !!!!!
Member: bastla
bastla Nov 11, 2010 at 09:27:41 (UTC)
Goto Top
@t-mo
ein leerezeichen? meine kopfä issse leer wie Flasche Bier, wo denn?
Nach dem "+" (zumindest war's vorher noch da face-wink - deswegen auch "C:\Dokumente und Einstellungen\xxx\Desktop\Test\+") ...

Grüße
bastla
Mitglied: 60730
60730 Nov 11, 2010 at 09:35:13 (UTC)
Goto Top
Zitat von @Razfaz:
@bastla:

Perfekt so hats geklappt, DANKE !!!!!

[OT]
@bastla - achso - ich brauch eh ne neue Tastatur, die olle kommt nicht mehr ganz mit meinen Fingern mit...
[/OT]


Salü,

dann bitte den How can I mark a post as solved? dran zimmern.
Und wegen Blat das sollte ja jetzt kein Thema mehr sein, denn zu blat haben wir mehr Beitrage, als die Bäume auf den Ästen.

Gruß
Member: Razfaz
Razfaz Nov 12, 2010 at 07:11:33 (UTC)
Goto Top
Jetzt habe ich doch noch eine Frage dazu.
Die txt Datei wird drei mal am Tag mit einem Text in der der Datei erweitert.
Das ist eien Log Datei von einem Programm, wo Informationen zur Versendeung von Paketen stehen.
Diese Datei wird dreimal am Tag erweitert. Leider nicht immer zu genauen Uhrzeiten.

Nun meine Frage:
Lässt sich das irgendwie realisieren,. das immer wenn die Datei erneuert wurde das obengenannte Script ausführt wird?
Es sollte also irgendwie eine Routine eingebaut werden, die prüft ob HEUTE (Datum) ein Text vorhanden ist.
Hier mal ein Auszug der Datei wie sie aussieht:

FTP-Senden                               Version 7.38.3 vom 26.01.2010 - PP38  #2
                                         Mem Vrt:     469236  09.11.2010 19:10:41 0001    0.000     0.000
FTP-Connect 1                            Host: xxx.145.31.140, User: giese130, Timeout: 0
                                         Mem Vrt:     469236  09.11.2010 19:10:42 0002    0.703     0.703
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101109T191018 Size (Bytes): 78280
                                         Mem Vrt:     469236  09.11.2010 19:10:42 0003    1.250     0.547
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101109T191018 Size (Bytes): 78280
                                         Mem Vrt:     469236  09.11.2010 19:10:42 0004    1.265     0.015
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101109T191018.sem Size (Bytes): 17
                                         Mem Vrt:     469236  09.11.2010 19:10:43 0005    1.609     0.344
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101109T191018.sem Size (Bytes): 17
                                         Mem Vrt:     469236  09.11.2010 19:10:43 0006    1.609     0.000
FTP-Disconnect                           Mem Vrt:     469236  09.11.2010 19:10:43 0007    1.625     0.016
FTP-Senden                               

FTP-Senden                               Version 7.38.3 vom 26.01.2010 - PP38  #1
                                         Mem Vrt:     325604  10.11.2010 15:59:10 0001    0.000     0.000
FTP-Connect 1                            Host: xxx.145.31.140, User: giese130, Timeout: 0
                                         Mem Vrt:     325604  10.11.2010 15:59:11 0002    0.625     0.625
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T155732 Size (Bytes): 357555
                                         Mem Vrt:     325604  10.11.2010 15:59:13 0003    2.469     1.844
FTP-Put Processed                        Remote: 195xxx145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T155732 Size (Bytes): 357555
                                         Mem Vrt:     325604  10.11.2010 15:59:13 0004    2.484     0.015
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T155732.sem Size (Bytes): 17
                                         Mem Vrt:     325604  10.11.2010 15:59:13 0005    2.875     0.391
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T155732.sem Size (Bytes): 17
                                         Mem Vrt:     325604  10.11.2010 15:59:13 0006    2.875     0.000
FTP-Disconnect                           Mem Vrt:     325604  10.11.2010 15:59:13 0007    2.875     0.000
FTP-Senden                               

FTP-Senden                               Version 7.38.3 vom 26.01.2010 - PP38  #2
                                         Mem Vrt:     382412  10.11.2010 16:57:13 0001    0.000     0.000
FTP-Connect 1                            Host: xxx.145.31.140, User: giese130, Timeout: 0
                                         Mem Vrt:     382412  10.11.2010 16:57:14 0002    0.500     0.500
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T165658 Size (Bytes): 51486
                                         Mem Vrt:     382412  10.11.2010 16:57:14 0003    0.938     0.438
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T165658 Size (Bytes): 51486
                                         Mem Vrt:     382412  10.11.2010 16:57:14 0004    0.938     0.000
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T165658.sem Size (Bytes): 17
                                         Mem Vrt:     382412  10.11.2010 16:57:14 0005    1.313     0.375
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T165658.sem Size (Bytes): 17
                                         Mem Vrt:     382412  10.11.2010 16:57:14 0006    1.313     0.000
FTP-Disconnect                           Mem Vrt:     382412  10.11.2010 16:57:14 0007    1.328     0.015
FTP-Senden                               

FTP-Senden                               Version 7.38.3 vom 26.01.2010 - PP38  #3
                                         Mem Vrt:     428492  10.11.2010 19:23:38 0001    0.000     0.000
FTP-Connect 1                            Host: xxx.145.31.140, User: giese130, Timeout: 0
                                         Mem Vrt:     428492  10.11.2010 19:23:38 0002    0.625     0.625
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T192308 Size (Bytes): 91033
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0003    1.219     0.594
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T192308 Size (Bytes): 91033
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0004    1.219     0.000
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T192308.sem Size (Bytes): 17
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0005    1.563     0.344
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T192308.sem Size (Bytes): 17
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0006    1.672     0.109
FTP-Disconnect                           Mem Vrt:     428492  10.11.2010 19:23:39 0007    1.672     0.000
FTP-Senden 

Wie man erkennen kann werden um ca. 16, 17 und 19 Uhr diese Dateien an DPD versendet.
Ich brauche also immer die letzte Information ausgeschnitten und in eine neue Datei eingefügt.
Also dies hier:
FTP-Senden                               Version 7.38.3 vom 26.01.2010 - PP38  #3
                                         Mem Vrt:     428492  10.11.2010 19:23:38 0001    0.000     0.000
FTP-Connect 1                            Host: xxx.145.31.140, User: giese130, Timeout: 0
                                         Mem Vrt:     428492  10.11.2010 19:23:38 0002    0.625     0.625
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T192308 Size (Bytes): 91033
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0003    1.219     0.594
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T192308 Size (Bytes): 91033
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0004    1.219     0.000
FTP-Put1                                 Local: ..\..\DPD\FFDatei\MPSEXPDATA_giese130_CUST_0130_D20101110T192308.sem Size (Bytes): 17
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0005    1.563     0.344
FTP-Put Processed                        Remote: xxx.145.31.140  MPSEXPDATA_giese130_CUST_0130_D20101110T192308.sem Size (Bytes): 17
                                         Mem Vrt:     428492  10.11.2010 19:23:39 0006    1.672     0.109
FTP-Disconnect                           Mem Vrt:     428492  10.11.2010 19:23:39 0007    1.672     0.000
FTP-Senden 

Kann ich da was machen und wenn ja wie?
Danke für Eure tolle Hilfe...
Gruß
Marco
Member: Razfaz
Razfaz Nov 12, 2010 at 07:29:08 (UTC)
Goto Top
Nachtrag: Würde das BatchFile dann über den geplanten Task alle 5min laufen lassen.
Mitglied: 60730
60730 Nov 12, 2010 at 09:24:11 (UTC)
Goto Top
Moin,

mach mal folgendes:

  • cmd öffnen
  • dir /? eingeben und eine Seite weiter blättern.

  • Du siehst den Schalter /T und seinen Parameter W

Ergo:

komplett neue Steuerbatch
dir /TW Laufwerk:\pfad\logile.suffix>logfile.now
fc logfile.now logfile.old && goto end || call Batch.cmd
move  logfile.now logfile.old

Oder das baust du in die vorhandene ein und statt call batch.cmd halt goto Sprungziel und das move kommt in die vorletzte Zeile (wenn die letzte exit ist)

Gruß