Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用FindStr+;批量长度_Batch File_Findstr - Fatal编程技术网

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