motorcross
Goto Top

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

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

bastla
bastla 17.10.2010 um 01:33:37 Uhr
Goto Top
Hallo Motorcross!

Nicht angepasst, sondern ganz neu geschrieben face-wink:
@echo off & setlocal
set "LetzteZeile="  
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "D:\Deine Datei.txt"') do set "LetzteZeile=%%j"  
echo\%LetzteZeile%
Zeile 3, falls keine Leerzeilen zu berücksichtigen sind:
for /f "usebackq delims=" %%i in ("D:\Deine Datei.txt") do set "LetzteZeile=%%i"
Grüße
bastla
rubberman
rubberman 17.10.2010 um 16:21:49 Uhr
Goto Top
@bastla

Mit FINDSTR /N bin ich vor einiger Zeit mal voll auf die Falle geschnautzt face-wink
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
Mit REM auskommentiert, meine Lösung. Der Unterschied: Label :echoLine ohne bzw. mit vorangestelltem Doppelpunkt.

Grüße
rubberman
bastla
bastla 17.10.2010 um 16:45:30 Uhr
Goto Top
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
rubberman
rubberman 17.10.2010 um 16:50:42 Uhr
Goto Top
Hallo bastla,

das delayedExpansion vereinfacht den Umgang mit Sonderzeichen bei der ECHO Ausgabe. Anders gesagt, du brauchst sie nicht zu maskieren.
Siehe
@echo off &setlocal
und
pause>nul

Grüße
rubberman