![批量从文本文件中的字符串中提取单词](https://linux22.com/image/1384148/%E6%89%B9%E9%87%8F%E4%BB%8E%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%8F%90%E5%8F%96%E5%8D%95%E8%AF%8D.png)
我有一个database.txt
包含以下内容的文件:
40001 16 DATAMAN Jimbo WS2
我想提取第三个单词,以空格分隔(本例中为“DATAMAN”),并将其存储在 Windows 批处理脚本中的变量中。空格的长度可以变化(单词的长度也可以变化)。
答案1
一个简单的解决方案是
for /f "tokens=3" %%a in (database.txt) do set word3=%%a
在此语句之后,变量%word3%
将包含文件中该行的第三个单词。如果文件有多行,您将从最后一行(至少有三个单词)获取第三个单词;命令set word3=%%a
(关键字之后do
)将执行,并将%%a
每个这样的行的第三个单词设置为该行。如果您决定要每行执行多个命令,请使用以下语法:
for /f "tokens=3" %%a in (database.txt) do (
…
命令引用
%%a
…
)
编辑:如上所述,后面的代码块中的代码(命令)会do
针对每个符合条件的行执行。如果您只想“捕获”第一个这样的行,只需添加过滤逻辑即可,如下所示:
setlocal enabledelayedexpansion
set first=1
for /f "tokens=3" %%a in (database.txt) do (
if !first! == 1 (
set first=0
…
命令引用
%%a
…
)
)
您可以用任何字母替换a
(in %%a
),但它必须只是一个字母;它不是普通变量。