Batch file 批处理脚本/findstr函数,仅回显分隔符的左侧

Batch file 批处理脚本/findstr函数,仅回显分隔符的左侧,batch-file,batch-processing,findstr,Batch File,Batch Processing,Findstr,我只想获取包含.PDF的文本文件中的文件名 预期产出: test.txt中的信息 put PP_12345.pdf some text here DOC ID 11223344555 put PP_23456.pdf some text here oopps this is a sample ls PP*.pdf put PE_12345.pdf some text here this is a sample sentence ls PE*.pdf put PE_23456.pdf some t

我只想获取包含.PDF的文本文件中的文件名

预期产出:

test.txt中的信息

put PP_12345.pdf some text here
DOC ID 11223344555
put PP_23456.pdf some text here
oopps this is a sample
ls PP*.pdf
put PE_12345.pdf some text here
this is a sample sentence
ls PE*.pdf
put PE_23456.pdf some text here
这是我的密码:

set Logtext="PP"
set Logtext1="PE"
set findfile="test.txt"

FOR  /f "TOKENS=1 DELIMS=." %%A IN ('findstr %Logtext% %findfile%') DO echo  %%A %DATE% - %TIME% >> log.txt
FOR  /f "TOKENS=1 DELIMS=." %%A IN ('findstr %Logtext1% %findfile%') DO echo  %%A %DATE% - %TIME% >> log.txt
下面是log.txt的结果:

 put PP_12345 03/05/2017 - 13:56:32.18 
 put PP_23456 03/05/2017 - 13:56:32.18 
 ls PP* 03/05/2017 - 13:56:32.18 
 put PE_12345 03/05/2017 - 13:56:32.30 
 ls PE* 03/05/2017 - 13:56:32.30 
 put PE_23456 03/05/2017 - 13:56:32.30 
@回音 SETLOCAL 设置sourcedir=U:\sourcedir 设置文件名1=%sourcedir%\q4375217.txt 设置Logtext=PP 设置Logtext1=PE REM set findfile=test.txt 对于/f令牌=1-3delims=.%“FINDSTR/L/i/c:%logtext%\uC:%logtext1%\u%filename1%^ find/v*”中的a如果/i%%c==pdf,则执行 回音%%b.%%c%日期%%time% 后藤:EOF 您需要更改sourcedir的设置以适应您的环境

我使用了一个名为q43752174.txt的文件,其中包含用于测试的数据

这假设您查找的文件名前面都有字空间,并且除了作为起始字符外,没有任何文件名包含p?u


编辑:添加了额外的查找筛选器以排除星号。

是,这是文本文件的实际信息。谢谢,它工作得很好。还有一件事,我看到一些文件包含ls-PE.*.PDF 03/05/2017-13:56:32.30 ls-PS.*.PDF 03/05/2017-13:56:32.30我还需要排除这些内容
 put PP_12345 03/05/2017 - 13:56:32.18 
 put PP_23456 03/05/2017 - 13:56:32.18 
 ls PP* 03/05/2017 - 13:56:32.18 
 put PE_12345 03/05/2017 - 13:56:32.30 
 ls PE* 03/05/2017 - 13:56:32.30 
 put PE_23456 03/05/2017 - 13:56:32.30