如何从 .log 文件的第一行提取特定字符串并忽略所有特殊字符?

问题描述 投票:0回答:1

我有一个日志文件,其中第一行很长并且充满了奇怪的(ASCII?)字符。我需要提取其中的时间戳,以便重命名文件。那条线看起来像这样:

MDF             CANwin I    ,                                  HD¤ ¶ (¶      21:12:202214:14:44                                                                                                                                  Q    p       e™    Ñ     48-375Šš    Q    `       øš    Ñ    -001   œ    Q    @    yœ    Ñ    Cpz  «    𨱌   ÿÿÿÿÿÿ¸ž    ðóÿ”  ÿÿÿÿÿÿÿTóž    àôÿˆ  ...

我需要提取时间戳

21:12:202214:14:44
.

这只会将第 1 行返回为“MDF”:

@echo off
setlocal enabledelayedexpansion enableextensions
set name=%~n1
set /p line1=< %name%.log
echo %line1%

我意识到 /p 有限制,但这是我获得任何输出的唯一方法。

string batch-file logging special-characters
1个回答
0
投票
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /p "line="<q75837443.txt
FOR %%e IN (%line%) DO (
 SET "datestring=%%e"
 IF "!datestring:~2,1!!datestring:~5,1!!datestring:~12,1!!datestring:~15,1!"=="::::" GOTO found
 SET "datestring="
)
:found
SET datestring
GOTO :EOF

q75837443.txt
是您的日志文件。

阅读该行,然后简单地将每个空格分隔的元素依次分配给

%%e
datestring
。如果
datestring
中的第2、5、12、15个字符(从头算起=
0
第)都是冒号,则用字符串转到
found

© www.soinside.com 2019 - 2024. All rights reserved.