Batch file 使用FindStr+;批量长度
在我的文本文件中是这一行Batch file 使用FindStr+;批量长度,batch-file,findstr,Batch File,Findstr,在我的文本文件中是这一行 08.01.2013 20:06:36: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0 08.01.2013 20:11:00: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0 08.01.2013 20:11:24: SolsticeFTW (109.189.238.1
08.01.2013 20:06:36: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:00: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:24: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
08.01.2013 20:11:50: SolsticeFTW (109.189.238.113:60381) 04ee8dfa81f700bba194a528911ecb4a - #0
09.01.2013 15:39:57: lalka (95.165.55.92:15609) 161c5a17c5afc0b1e079fca7fdc8f1a9 - #0
我想根据Findstr命令过滤一个文本文件,这是可行的,但我无法让它只过滤32位单词。例如04ee8dfa81f700bba194a528911ecb4a和161c5a17c5afc0b1e079fca7fdc8f1a9。到目前为止,它只通过过滤完整的行来工作
有人知道我如何只过滤32位符号/令牌吗?FINDSTR只能打印匹配的整行。它没有像grep这样的功能,只能列出文本的匹配部分 FOR/F命令通常可用于从一行文本中提取标记,具体取决于数据的格式。您可以使用FINDSTR只选择适当的行,FOR/F处理这些结果并提取32位标记 我不知道你的FINDSTR搜索条件是什么,所以我会做一些补充,作为一个例子。假设您要打印以
#0
结尾的行的32位标记
FINDSTR选择适当的行,查找以#0
结尾的行。FOR/F将每个结果行解析为标记,以空格分隔。(令牌分隔符可以通过DELIMS选项更改,但默认为空格和制表符)。你要第五个代币
for /f "tokens=5" %%A in ('findstr /le " #0" "someFile.txt"') do echo %%A
根据OP评论进行编辑 如果不需要筛选行,只需将每个32位ID写入一个新文件,则更简单:
(for /f "tokens=5" %%A in (logged-players.log) do echo %%A) >logged-bans.txt
上面的文本框称为“logged players.log”。我只想将32位令牌/ID写入名为“logged bans.txt”的文本文件中。只有ID而不是#0或任何东西,只有32位的令牌/ID。使用[0-9a-z]可能有效,但我不知道使用哪个命令。然后我得到“C:\Test>echo 161c5a17c5afc0b1e079fca7fdc8f1a9 161c5a17c5afc0b1e079fca7fdc8f1a9”,但我只希望“161c5a17c5afc0b1e079fca7fdc8f1a9”不显示路径和echo。@user1984532-关闭
echo
,或者在命令前面放置,如do@echo%%A
。