2017-04-07 2 views
0

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.

+1

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

+0

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

Antwort

0

Vorausgesetzt, Sie möchten die //trailer los, fügen Sie ein Leerzeichen als Trennzeichen hinzu.

@Echo off 
For /f "tokens=3delims=| " %%A in (sample.txt) Do Set LastRowCol3=%%A 
Echo [LastRowCol3=%LastRowCol3%] 
Verwandte Themen