批量显示两个文件夹中包含* _ ???? *。*的文件

时间:2014-11-25 09:27:56

标签: windows batch-file

抱歉,但我的英语很差! 我有两个文件夹,包含以下几个文件:

D:\Folder1\
START_0101.dat..
START_0105.dat..
START_0109.dat..
..
..
..
START_0250.dat.

D:\Folder2\
rms_20141124_0100.mdb..
rms_20141124_0108.mdb..
rms_20141124_0109.mdb..
..
..
..
rms_20141124_0250.mdb.

我需要一个批处理脚本来显示Folder2中存在文件* 109.mdb和* 250.mdb。 如果存在,则显示消息。

WINDOWS 2000


我可以在folder1中有几个文件,这个模式是“* _ ????。dat”。 d:\ Folder1中\ START_0101.dat .. START_0105.dat .. START_0109.dat .. .. .. .. * _ ????。DAT

我可以在folder2中有几个文件,这个模式是“* _ ????。mdb”。 d:\文件夹2 \ rms_20141124_0100.mdb .. rms_20141124_0108.mdb .. rms_20141124_0109.mdb .. .. .. .. * _ ????。MDB

我需要这样的东西:

如果存在“d:\ folder1 * _ ????。”set“found = 1” 如果存在“d:\ folder2 * _ ????。”设置“found = 2”

如果“%1%”EQU“%2%”(   echo file%found%存在  )其他(     echo文件不存在  )

非常感谢!

1 个答案:

答案 0 :(得分:1)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "folder1=d:\folder1"
    set "folder2=d:\folder2"

    for %%a in ("%folder1%\*.dat") do (
        for /f "tokens=2 delims=_" %%b in ("%%~na") do (
            if exist "%folder2%\*_%%b.mdb" (
                echo %%b exists
            ) else (
                echo %%b missing
            )
        )
    )

对于文件夹1中的每个.dat文件,从for可替换参数%%a中检索对该文件的引用,从中获取文件名(%%~na),使用下划线作为分隔符对其进行标记,并检索第二个标记。显示文件夹2中是否存在具有相同令牌的.mdb文件。

已修改以适应folder2中的多个子文件夹

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "folder1=d:\folder1"
    set "folder2=d:\folder2"

    for %%a in ("%folder1%\*.dat") do (
        for /f "tokens=2 delims=_" %%b in ("%%~na") do (

            set "match="
            for /r "%folder2%" %%c in ("*_%%b.mdb") do  if not defined match (
                set "match=1"
                echo %%~nxa located as %%c
            )

            if not defined match (
                echo %%b missing
            )
        )
    )