Batch file 如何使用批处理文件同步/镜像两个文件夹?

Batch file 如何使用批处理文件同步/镜像两个文件夹?,batch-file,Batch File,我正在编写一个自动备份程序,可以通过任务调度器进行计划。 我已经完成了,它将成功地确保它可以读/写源文件夹和目标文件夹,然后将所有内容从源文件夹复制到目标文件夹,忽略尚未更改的文件。我要做的是将目标文件夹“同步”到源文件夹。我尝试将文件名从%destdir%(输入的目标路径的变量)回显到.txt文件中,然后将.txt文件与%sourcedir%(输入的源路径的变量)中的文件名进行比较,删除.txt文件中未列出的任何内容。这在理论上是可行的,但我认为我的语法可能是错误的,因为我对if和for并不完

我正在编写一个自动备份程序,可以通过任务调度器进行计划。 我已经完成了,它将成功地确保它可以读/写源文件夹和目标文件夹,然后将所有内容从源文件夹复制到目标文件夹,忽略尚未更改的文件。我要做的是将目标文件夹“同步”到源文件夹。我尝试将文件名从
%destdir%
(输入的目标路径的变量)回显到.txt文件中,然后将.txt文件与
%sourcedir%
(输入的源路径的变量)中的文件名进行比较,删除.txt文件中未列出的任何内容。这在理论上是可行的,但我认为我的语法可能是错误的,因为我对
if
for
并不完全熟悉。到目前为止,备份例程是这样的:

echo Copying files...
xcopy /s/e /y /h /k /z /d /i %sourcedir% %destdir%
for /r "%destdir%" %%F in (*.*) do echo %%F>> list.txt
for /F "tokens=2* delims=\" %%I in (list.txt) do if not exist "%sourcedir%" del "%destdir%"
del list.txt
pause
if %errorlevel%==0 goto success
if %errorlevel%==gtr 0 goto failure
我一定是做错了什么(我猜是
for/F“tokens=2*delims=\”%%I in(list.txt)do if not exist”%sourcedir%%“del”%destdir%%“
。这方面的问题似乎不太对劲,但我不能完全确定。我已经调试了一个小时左右,似乎无法解决这个问题

任何帮助都将不胜感激。

ECHO复制文件。。。
ECHO Copying files...

SET "SOURCEDIR=Dir to copy"
SET "DESTDIR=Dir where the files shoud be"

XCOPY /s/e /y /h /k /z /d /i "%SOURCEDIR%" "%DESTDIR%"
FOR /R "%DESTDIR%" %%F IN (*.*) DO ( ECHO %%F>> list.txt
FOR /F "tokens=2* delims=\" %%I in (list.txt) DO IF NOT EXIST "%SOURCEDIR%" DEL "%DESTDIR%"
DEL list.txt

IF "%errorlevel%" EQU "0" ( goto :SUCCESS )
IF "%errorlevel%" GTR "0" ( goto :FAILURE )

:SUCCESS
<<command you want to use here.>>
GOTO :END

:FAILURE
<<command you want to use here.>>
GOTO :END

:END
EXIT /B "%ERRORLEVE%"
将“SOURCEDIR=Dir设置为复制” 设置“DESTDIR=Dir文件应该在哪里” XCOPY/s/e/y/h/k/z/d/i“%SOURCEDIR%”“%DESTDIR%” 对于(*.*)中的/R“%DESTDIR%”%%F,请执行(ECHO%%F>>list.txt 对于/F“tokens=2*delims=\”%(list.txt)中的%%I不存在“%SOURCEDIR%”DEL“%DESTDIR%” DEL list.txt 如果“%errorlevel%”等于“0”(转到:成功) 如果“%errorlevel%”全球技术法规“0”(转到:故障) :成功 后藤:结束 :失败 后藤:结束 :结束 退出/B“%ERRORLEVE%”
对于(…)中的/F…%%I,请执行