我想创建这样的场景,其中有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中删除。
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
所有场景都已完成,期望验证者场景能够实现。