Batch file 将一行修剪为一个字符串文件

Batch file 将一行修剪为一个字符串文件,batch-file,Batch File,我在一个文本文件中有2000多个(类似的): 2018-07-07_11_38_MA_output_log.txt:[13:00:54] Accepted authentication token of user 76561198071607345 with global ban status 0 signed by Warsaw 1 server. 2018-07-07_11_38_MA_output_log.txt:[14:07:55] Accepted authentication tok

我在一个文本文件中有2000多个(类似的):

2018-07-07_11_38_MA_output_log.txt:[13:00:54] Accepted authentication token of user 76561198071607345 with global ban status 0 signed by Warsaw 1 server.
2018-07-07_11_38_MA_output_log.txt:[14:07:55] Accepted authentication token of user 76561198071607345 with global ban status 0 signed by Warsaw 1 server.
2018-07-07_11_38_MA_output_log.txt:[14:49:50] Accepted authentication token of user 76561198071607345 with global ban status 0 signed by Warsaw 1 server.
2018-07-07_11_38_MA_output_log.txt:[14:51:56] Accepted authentication token of user 76561198071607345 with global ban status 0 signed by Warsaw 1 server.
2018-07-07_11_38_MA_output_log.txt:[15:35:53] Accepted authentication token of user 76561198139232244 with global ban status 0 signed by Warsaw 1 server.
我需要将它们精简为76561198071607345(它们并不完全相同)

我还使用批处理文件从所有日志中获取这些:

cd ..
cd servers\1\logs

findstr /R 7656*  *_MA_output_log.txt >> "..\..\..\tools\pre-results.txt"
简单一点(因为数据结构美观):


(这是命令行语法。要在批处理文件中使用,请使用
%%a
而不是
%a

我将按以下方式执行:

@echo关闭
rem//逐行读取文本文件:
对于/F“usebackq delims=“%%L in”(“pre results.txt”)do(
rem//存储当前行:
设置“行=%%L”
rem//切换延迟扩展以避免丢失“!”:
setlocal EnableDelayedExpansion
rem//从字符串中分离文件名部分:
设置“行=!行:*=!”
rem//分离时间部分:
设置“行=!行:*]=!”
rem//提取感兴趣的字符串部分,但仅当找到固定字符串时:
对于/F“tokens=6”%%K in('cmd/V/C“echo(^!LINE^!”^^!findstr/B/C:'Accepted authentication token of user“'),请执行以下操作:(
端部
rem//返回所需的字符串部分:
回声(%%K
setlocal EnableDelayedExpansion
)
端部
)

(这涉及到文件名部分也可能包含
]
,如果小时部分由一位数字组成,则时间部分也可能包含空格。)

请提供更多的数据示例。我已经格式化了数据并添加了更多示例,感谢您的评论。我正在考虑使用
语法替换
删除部分字符串。忘记了
“tokens=7”
只需查找行中的第7个文本。这就是我喜欢这个网站的原因,非常好的响应!好吧,所以我把它打印到CMD中,但当我把它放在最初获取行的批处理文件中时,它似乎不起作用。让我把初始代码放在post@LordofKhaos只需将
pre results.txt
用作文本文件即可您可以将结果保存到。然后您可以使用
>
for /f "tokens=7" %a in (t.txt) do @echo %a