Batch file 批处理脚本/findstr函数,仅回显分隔符的左侧
我只想获取包含.PDF的文本文件中的文件名 预期产出: test.txt中的信息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
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