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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 154837
Url: https://administrator.de/forum/letzten-7-zeilen-kopieren-und-in-eine-neue-datei-einfuegen-154837.html
Ausgedruckt am: 16.02.2025 um 19:02 Uhr
15 Kommentare
Neuester Kommentar
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ß
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ß
![60730](/images/members/profile_male_48x48.png)
Moin,
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:
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 .....
for /f "tokens=1 delims=:" %%a in ('findstr /n "." "%filetoworkwith%"') do .....
![60730](/images/members/profile_male_48x48.png)
Zitat von @Razfaz:
Danke, aber bei Abruf erschein ein Fehler:
Auf die Datei C:\Dokumente und Einstellungen\xxx\Desktop\Test\+ kann nicht zugegriffen werden.
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ß
Hallo Razfaz!
Dann versuch es einmal mit der etwas behübschten Variante:
Grüße
bastla
P.S.: @t-mo:
![face-wink face-wink](/images/icons/fa/light/face-laugh-wink.svg)
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%"
bastla
P.S.: @t-mo:
Kauf ich halt noch zwei " dazu....
... und verkauf noch ein Leerzeichen ![60730](/images/members/profile_male_48x48.png)
[OT]
@ Bastla: ein leerezeichen? meine kopfä issse leer wie Flasche Bier, wo denn?
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 face-wink](/images/icons/fa/light/face-laugh-wink.svg)
[/OT]
Gruß
@ 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
[/OT]
Gruß
![60730](/images/members/profile_male_48x48.png)
[OT]
@bastla - achso - ich brauch eh ne neue Tastatur, die olle kommt nicht mehr ganz mit meinen Fingern mit...
[/OT]
Salü,
dann bitte den Wie kann ich einen Beitrag als gelöst markieren? 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ß
![60730](/images/members/profile_male_48x48.png)
Moin,
mach mal folgendes:
Ergo:
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ß
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ß