删除另一个文件夹中不存在的文件-Backup in Batch

时间:2012-01-06 01:48:36

标签: windows batch-file

我正在编写自己的批处理脚本来将一些文件备份到外部。这是我到目前为止所得到的:

@echo off
:: variables
set /p dname=Enter the Backup drive's drive letter:
set drive=%dname%:\Backup
set folder=%%date:~4,2%_%date:~7,2_date:~10,4%%
set backupcmd=xcopy /s /c /d /e /h /i /r /y /q

echo ### Backing up My Documents...
%backupcmd% "%USERPROFILE%\Documents" "%drive%\Last\Documents"

echo ### Backing up Favorites...
%backupcmd% "%USERPROFILE%\Favorites" "%drive%\Last\Favorites"

echo ### Setting backup folder of today's date...
%backupcmd% "%drive%\Last\Documents" "%drive%\%folder%\Documents"
%backupcmd% "%drive%\Last\Favorites" "%drive%\%folder%\Favorites"

echo Backup Complete!

所以最后两个文件夹:Last和today的日期将包含相同的内容。我希望Last文件夹当前包含我的C驱动器中的确切内容,但是我不想删除仅复制新修改文件的xcopy功能。有没有办法递归我的Documents文件夹并从Last中删除C中不存在的任何文件:?

换句话说,首次运行脚本会创建

Last\Documents\file1.txt and (Date)\Documents\file1.txt

第二次运行(其中file1.txt已从驱动器C中删除:)明天发生并包含:

Last\Documents\(no file1.txt) and (NewDate)\Documents\(no file1.txt) 

但是

(Date)\Documents\file1.txt 

保持不变

1 个答案:

答案 0 :(得分:0)

我建议查看robocopy中可用的镜像选项。现在,Windows 7中默认使用Robocopy。这是一个很好的方式。