简体   繁体   中英

Batch to show me files with *_????*.* in two folders

Sorry, but my English is very poor! I have two folders with several files like below:

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.

I need a batch script to show that files *109.mdb and *250.mdb exists in Folder2. If exists, then display a message.

WINDOWS 2000


I can have several files in folder1, with this pattern "*_????.dat". D:\\Folder1\\ START_0101.dat.. START_0105.dat.. START_0109.dat.. .. .. .. *_????.dat

I can have several files in folder2, with this pattern "*_????.mdb". D:\\Folder2\\ rms_20141124_0100.mdb.. rms_20141124_0108.mdb.. rms_20141124_0109.mdb.. .. .. .. *_????.mdb

I need something like this:

if exist "d:\\folder1*_????. " set "found=1" if exist "d:\\folder2*_????. " set "found=2"

if "%1%" EQU "%2%" ( echo file %found% exist ) else ( echo file doesn't exist )

Thanks a lot!

@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
            )
        )
    )

For each .dat file in folder 1, retrieve a reference to the file in for replaceable parameter %%a , from it, get the file name ( %%~na ), tokenize it using the underscore as delimiter and retrieve the second token. Show if exist a .mdb file in folder 2 with the same token.

edited to adapt to multiple subfolders in 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
            )
        )
    )

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM