2017-04-07 113 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%]