Ich habe eine Datei sample.txt
mit dem Inhalt wie folgt.Wie erhält man das letzte Wort in der letzten Zeile einer Datei mit Windows-Batch-Skript?
H|20170331|CIS
A||A1140|GRM //header
A||A1140|GRM
A||A1140|GRM
A||A1140|GRM
A||A1140|GRM
T|20170331|5 //trailer
Ich brauche das letzte Token in der letzten Zeile das heißt 5
. (Es ist die Zählung der Linie außer Header-Trailer).
Ab sofort versuchte ich unten; es gibt das erste Token, d. h. T
, aber ich brauche das letzte Token, d. h. 5
.
@echo off
rem for /f "skip=1 tokens=2,* delims=" %%a in (sample.txt) do set "variable=%%a"
rem for /f "delims=|" %%x in (sample.txt) do set "variable=%%x"
for /f "delims=|" %%G in (sample.txt) do set "variable=%%G"
echo %variable%
pause
Beachten Sie, dass die Datei Tausende von Datensätzen enthalten kann, sodass das letzte Token erforderlich ist.
Haben Sie die letzte Zeile 3 Tokens _always_? Wenn ja, ist die Lösung einfach: 'for/f" Token = 3 delims = | " %% G in (sample.txt) setze "variable = %% G" ' – Aacini
Sie müssen genauer über Ihren Dateiinhalt sein, hat die letzte Zeile wirklich einen abschließenden '// trailer', weil ich annehmen würde, wenn das wäre wahr '// header' würde in der ersten Zeile folgen, beginnend mit 'H | ', nicht die zweite. Gibt es auch Leerzeichen in den Feldern/Tokens auf der Trailerzeile und wenn ja, werden diese Felder doppelt zitiert? – Compo