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,请执行