Windows 如何在批处理中直接在确定字符串之前查找变量字符串
我有一个批处理文件,它在日志文件的最后一行找到一个字符串(下面的代码) 它的作用是在日志文件的最后一行搜索Windows 如何在批处理中直接在确定字符串之前查找变量字符串,windows,batch-file,cmd,Windows,Batch File,Cmd,我有一个批处理文件,它在日志文件的最后一行找到一个字符串(下面的代码) 它的作用是在日志文件的最后一行搜索:help,如果找到它,则转到代码的下一部分。假设日志文件的最后一行包含以下内容 [11:13:55] [Example]: [Time] <Tag435> :help 但是,在我的日志文件中,它并不总是在:help之前,所以这意味着我必须为:help之前的每个可能的单词添加if语句,我不希望这样做。任何帮助都将不胜感激 以下是我的分类: 首先,找出文件中有多少行: @echo
:help
,如果找到它,则转到代码的下一部分。假设日志文件的最后一行包含以下内容
[11:13:55] [Example]: [Time] <Tag435> :help
但是,在我的日志文件中,它并不总是在:help
之前,所以这意味着我必须为:help
之前的每个可能的单词添加if
语句,我不希望这样做。任何帮助都将不胜感激 以下是我的分类:
首先,找出文件中有多少行:
@echo off
for /F "delims=[]" %%a in ('find /N /V "" logfile.log') do ( set FILE_SIZE=%%a)
set /A LAST_LINE=%FILE_SIZE%-1
查看最后一行是否包含:help
more +%LAST_LINE% logfile.log | findstr /M ":help" > nul
如果它确实包含文本:help
,则获取第6个令牌(“help”前面的令牌)
当我运行此程序时,请确保更改所有变量,使其与我的程序一起工作,它会在应该在
Found Tag435:help之前输出Found Time before:help
,那么您没有准确描述日志文件的格式。通过更改tokens=6
部分,您应该能够获得不同的元素。感谢您的解释。简单地说,我所要做的就是将其更改为tokens=7
!我将此标记为已接受的答案,再次感谢!
@echo off
for /F "delims=[]" %%a in ('find /N /V "" logfile.log') do ( set FILE_SIZE=%%a)
set /A LAST_LINE=%FILE_SIZE%-1
more +%LAST_LINE% logfile.log | findstr /M ":help" > nul
if %errorlevel% == 0 (
for /F "tokens=6 delims=:<>[] " %%a in ('more +%LAST_LINE% logfile.log') do (
echo(Found %%a before :help
)
)
@echo off
for /F "delims=[]" %%a in ('find /N /V "" logfile.log') do ( set FILE_SIZE=%%a)
set /A LAST_LINE=%FILE_SIZE%-1
more +%LAST_LINE% logfile.log | findstr /M ":help" > nul
if %errorlevel% == 0 (
for /F "tokens=6 delims=:<>[] " %%a in ('more +%LAST_LINE% logfile.log') do (
echo(Found %%a before :help
)
)