投稿 评论 顶部

tokens处理

佚名 网络安全
今天在对windows进行提权之前的系统信息收集的时候,需要使用到一条批处理语句把特定部分的内容从一个txt的文本当中提取出来;该条语句是如下:
for /f "tokens=2,3 delims==" %%a in (tmplist.txt) do (echo %%a >> software.txt)

但是跟着教程一路操作下来,到了这一步却出现了如下的错误:

报出的错误是此处不应有%%a,按照这个错误提示去搜索,也没有找到一个能解决的答案

delims==" %%a in (tmplist.txt) do echo %%a

得到的结果如下:

tokens=2 delims=*." %%a in (tmplist.txt) do echo %%a

1*饶天亮=玫瑰爱人.wma
2*高一首=我不愿错过.mp3
3*黃凱芹=傷感的戀人.MP3
4*黄灿=黄玫瑰.lrc
5*黎姿=如此这般的爱情故事.mp3

得到的结果如下:


例如:1*饶天亮=玫瑰爱人.wma这一行就被分为以下三部分:

饶天亮=玫瑰爱人············第二部分给定序号为2

-------------------------------------------------

-------------------------------------------

所以如果想要取出第2、3部分的话,代码如下:

for /f "tokens=1,3 delims=*." %%a in (tmplist.txt) do echo %%a %%b

**不知道有没有发现,当tokens的参数有两个时,在命令的最后多了一个参数 %%b

“%%a %%b”对应于“token”后面的列数。有多少列就要有多少个输出变量,并且各变量中的字母存在先后顺序。


0x05 关于最开始的报错:“此处不应有%%a ”的解决办法

根绝前面的分析,整条命令的用法,以及各个参数的含义已经基本了解,并且根据操作都能正确的执行并得到结果,但是当我还是按照我最后的理解在cmd命令行里面去执行的时候,依然爆出“此处不应有%%a”的错误,最后发现,如果将所有的需要执行的命令都放在.bat的脚本文件里去执行的话都不会有任何错误,但是如果将命令直接放到cmd命令行执行的话,还是不能正确执行;
最后找到的解决办法就是:如果想要在cmd命令行里面使for /f "tokens=2,3 delims==" %%a in (tmplist.txt) do (echo %%a >> software.txt)语句生效执行的话,需要将%%a换成%a,就能正确执行了;