2017-04-07 117 views
0

我有一個文件sample.txt,內容如下。如何使用Windows批處理腳本獲取文件最後一行中的最後一個單詞?

H|20170331|CIS 
A||A1140|GRM //header 
A||A1140|GRM 
A||A1140|GRM 
A||A1140|GRM 
A||A1140|GRM 
T|20170331|5 //trailer 

我需要最後一行中的最後一個標記,即5(這是除首部預告片外的行數)

截至目前,我在下面嘗試;它給出第一個標記,即T,但我需要最後一個標記,即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 

請注意,該文件可以包含數千條記錄,因此需要最後一個標記。

+1

有最後一行3個標記_always_?如果是這樣,解決方案很簡單:'for/f「令牌= 3 delims = |」 %% G in(sample.txt)do set「variable = %% G」' – Aacini

+0

您需要對文件內容更加具體,最後一行確實有尾隨'//預告',因爲我會假設if那是真的'// header'會在第一行開始,從'H |'開始,而不是第二行。拖車路線上的字段/標記還有空格嗎?如果是的話,那些字段是雙引號的? – Compo

回答

0

假設你想擺脫//trailer添加一個空格作爲分隔符。

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