使用以'abc ...'而不是'-abc ...'开头的FINDSTR查找文件名

时间:2019-12-19 15:59:13

标签: windows batch-file findstr

我有一个带子文件夹的文件夹,其中包括文件。

在Windows 10中,带有批处理文件,

我想使用FINDSTR命令在.txt文件中搜索特定的字符串,然后将包含我的字符串的文件复制到当前文件夹中。

REM Adjust location of list
SET list=C:\WorkProjects\Experiment\list.txt

REM Source dir
SET source=Z:\

REM Target dir
SET destination=C:\WorkProjects\Experiment

SET logfile=Outcome2.log

cd /d "%source%">>"%destination%\%directoryfile%"
dir * /s/b | FINDSTR /I /R /C:".*.pdf">"%destination%\%directoryfile%"

ECHO 2>"%destination%\temp.txt"

FOR /F "tokens=1,* delims=|" %%A IN (%list%) DO (
    ECHO %%A>>"%destination%\temp.txt"
    For /F "Delims=" %%X In ('FINDSTR /I /R /C:"\<%%A\..*\>" "%destination%\%logfile%"') DO (
    ECHO %%X>>"%destination%\temp.txt"
    )
)

%list%包含一个字符串列表,如下所示如下

12345
abcdf
aadfe

以下是示例的输出:

12345 <-这是我要查找的字符串

Z:\ Master List \ 1 \ 12 \ 123 \ 1234 \ 12345.pdf <-输出

Z:\ Master List \ A \ AD \ AD-1 \ AD-12 \ AD-12345.pdf <-输出

所以,第一个路径就是我要返回的路径,而第二个路径不是因为它前面有“ AD-”。

我将如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

您执行以下操作:

dir * | findstr "12345"

您发现:

12345.txt
AD-12345.txt

如果您的脚本基于以下内容:

dir 12345.*

您会发现:

 12345.txt

找不到AD-12345

答案 1 :(得分:0)

'FINDSTR /I /R /C:"\<%%A\..*\>"更改为'FINDSTR /I /R /C:"\\%%A\..*\>"可以达到目的