创建一个批处理文件,使用文本文件验证来同步两个文件夹

时间:2018-07-13 22:32:04

标签: batch-file batch-processing

我想创建这样的场景,其中有A和B的两个文件夹和子文件夹,当文件夹A中有文件或数据添加时,它应该在文件夹B中创建相同的文件或数据(包括子文件夹)。另外,例如,文件夹A中有6个文件,文件夹B中有7个文件,系统会自动检查文件夹A和B的文件和子文件,并删除不匹配的文件(pqr.js ),来自“文件夹B”。我们还想在文件夹A和B之间创建一个桥接或验证器文本文件,以验证文件名,例如,文本文件(Validator)ABC.txt中是否存在文件名“ config.properties”,而该文件不是存在于文件夹A中的系统应在删除文件夹B中的任何文件之前检查验证器中的文件名。因此,如果文件夹A中没有此类文件名config.properties但存在于验证器文本文件系统中,该文件将保留在文件夹B中从文件夹A中删除。

enter image description here

set dirsrc=folder A
set dirdest=folder B
set validator=ABC.txt 

setlocal ENABLEDELAYEDEXPANSION

echo Source: "%dirsrc%"

echo Destination: "%dirdest%"

echo.

echo.

echo Cleaning files...

for /f "tokens=*" %%a in ('dir /s /b /a:-d "%dirdest%"') do (

     set curdest=%%a

     set cursrc=!curdest:%dirdest%=%dirsrc%!

     if not exist !cursrc! (

     echo Deleting "!curdest!"

        del "!curdest!"

)

)

echo.

echo.

echo Cleaning directories...

set NLM=^

set NL=^^^%NLM%%NLM%^%NLM%%NLM%

rem Two lines left empty for NewLine to work

for /f "tokens=*" %%a in ('dir /s /b /a:d "%dirdest%"') do (

     set curdest=%%a

     set cursrc=!curdest:%dirdest%=%dirsrc%!

     if not exist !cursrc! (

     set rmlist=!curdest!?!rmlist!

)

)

set rmlist=!rmlist:?=%NL%!

for /f "tokens=*" %%a in ("!rmlist!") do (

    if exist %%a (

    echo Removing directory "%%a"

    rmdir "%%a"

)

)

xcopy /i /y /e "%dirsrc%" "%dirdest%" /d
endlocal

所有场景都已完成,期望验证者场景能够实现。

0 个答案:

没有答案