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-Key: 153211

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

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

Member: bastla
bastla Oct 16, 2010 at 23:33:37 (UTC)
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
Member: rubberman
rubberman Oct 17, 2010 at 14:21:49 (UTC)
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
Member: bastla
bastla Oct 17, 2010 at 14:45:30 (UTC)
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
Member: rubberman
rubberman Oct 17, 2010 at 14:50:42 (UTC)
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