Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Windows 如何在批处理中直接在确定字符串之前查找变量字符串_Windows_Batch File_Cmd - Fatal编程技术网

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
    ) 
)