用于在多个文件中搜索多个字符串的批处理脚

时间:2014-08-20 10:40:40

标签: windows batch-file search

我尝试编写批处理脚本来执行以下任务

我在名为empids.txt的文本文件中列出了1000个唯一的员工ID(数字ID,数字编号可能不同)。此外,我还有一个名为MasterIDs的文件夹,其中包含多个文本文件,每个文本文件都有10万个ID

我尝试使用批处理脚本来搜索empids.txt中列出的1000个ID,并显示MasterIDs文件夹中多个文本文件中是否存在任何列出的ID。预期结果如下所示

预期输出

  • 12345678位于* .txt
  • 1145897未找到

下面是我试过的批处理脚本,我没有得到预期的输出。它只搜索并给出包含搜索字符串的整行。

set manifest_folder=\\vfiler-padhu\padhu\*.txt
set file_list=\\vfiler-padhu\padh\File_list.txt
set tmpFile=\\vfiler-padhu\padh\tmpFile.txt
for /f "delims=" %%f in (%file_list%) do (
findstr /L  %%f %manifest_folder% >> %tmpFile%
) 
pause

我刚开始学习批处理脚本。请帮助完成这项任务。

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal enableextensions disabledelayedexpansion

set "manifest_folder=\\vfiler-padhu\padhu\*.txt"
set "file_list=\\vfiler-padhu\padh\File_list.txt"
set "tmpFile=\\vfiler-padhu\padh\tmpFile.txt"

    (for /f "usebackq delims=" %%a in ("%file_list%") do (
        set "found="
        for /f "delims=" %%b in ('findstr /l /m /c:"%%a" "%manifest_folder%"') do (
            echo %%a is found in %%~nxb
            set "found=1"
        )
        if not defined found (
            echo %%a is not found
        )
    )) > "%outputFile%"

这将读取输入文件,并且对于每个行/ id,执行清单文件夹中的搜索,询问找到id的文件的名称。