Per Batch Die letzte Zeile einer .txt Datei auslesen und in einer Variablen speichern
Hallo Administratoren,
ich würde gerne über einen Batchscript die letzte Zeile einer .txt Datei auslesen und in einer Variablen speichern.
Ich würde mich über einen für mein Problem angepassten Script freuen.
MfG Motorcross
ich würde gerne über einen Batchscript die letzte Zeile einer .txt Datei auslesen und in einer Variablen speichern.
Ich würde mich über einen für mein Problem angepassten Script freuen.
MfG Motorcross
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 153211
Url: https://administrator.de/forum/per-batch-die-letzte-zeile-einer-txt-datei-auslesen-und-in-einer-variablen-speichern-153211.html
Ausgedruckt am: 07.01.2025 um 09:01 Uhr
4 Kommentare
Neuester Kommentar
Hallo Motorcross!
Nicht angepasst, sondern ganz neu geschrieben :
Zeile 3, falls keine Leerzeilen zu berücksichtigen sind:
Grüße
bastla
Nicht angepasst, sondern ganz neu geschrieben :
@echo off & setlocal
set "LetzteZeile="
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "D:\Deine Datei.txt"') do set "LetzteZeile=%%j"
echo\%LetzteZeile%
for /f "usebackq delims=" %%i in ("D:\Deine Datei.txt") do set "LetzteZeile=%%i"
bastla
@bastla
Mit FINDSTR /N bin ich vor einiger Zeit mal voll auf die Falle geschnautzt
Bei Zeilen, die mit einem Doppelpunkt beginnen, wird dieser einfach eliminiert.
Als Beispiel (ja natürlich ginge das mit TYPE einfacher, aber das ist hier nicht der Sinn):
Mit REM auskommentiert, meine Lösung. Der Unterschied: Label :echoLine ohne bzw. mit vorangestelltem Doppelpunkt.
Grüße
rubberman
Mit FINDSTR /N bin ich vor einiger Zeit mal voll auf die Falle geschnautzt
Bei Zeilen, die mit einem Doppelpunkt beginnen, wird dieser einfach eliminiert.
Als Beispiel (ja natürlich ginge das mit TYPE einfacher, aber das ist hier nicht der Sinn):
@echo off &setlocal
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%~0"') do (
REM for /f "tokens=* delims=1234567890" %%a in ('findstr /n "^" "%~0"') do (
set "line=%%b"
REM set "line=%%a"
call :echoLine
)
pause>nul
goto :eof
:echoLine
setlocal enabledelayedexpansion
echo\!line!
REM echo\!line:~1!
endlocal
goto :eof
Grüße
rubberman
Hallo rubberman!
Stimmt (wobei in Zeilen, die mit mehreren Doppelpunkten beginnen, alle eliminiert werden - ist ja der vorgegebene Delimiter) ...
Nur interessehalber: Wozu brauchst Du "delayedExpansion"?
Noch ein Hinweis: Mit "%~f0" würde Deine Demo auch funktionieren, wenn der Batch nur mit Namen (also ohne Extension) aufgerufen wird ...
Grüße
bastla
Stimmt (wobei in Zeilen, die mit mehreren Doppelpunkten beginnen, alle eliminiert werden - ist ja der vorgegebene Delimiter) ...
Nur interessehalber: Wozu brauchst Du "delayedExpansion"?
Noch ein Hinweis: Mit "%~f0" würde Deine Demo auch funktionieren, wenn der Batch nur mit Namen (also ohne Extension) aufgerufen wird ...
Grüße
bastla