批量从文本文件中的字符串中提取单词

批量从文本文件中的字符串中提取单词

我有一个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),但它必须只是一个字母;它不是普通变量。

相关内容