我有一个日志文件,其中第一行很长并且充满了奇怪的(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 有限制,但这是我获得任何输出的唯一方法。
@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