这是一个通用的备份脚本。
@echo off
REM get start time
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
REM set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
set "logtimestamp=%YYYY%.%MM%.%DD% %HH%:%Min%:%Sec%"
REM actual copy
set source=%1
set destination=%2
REM create the exclusion list
set exclusion=%3
set exclusion=%exclusion:"=%
(for %%i in (%exclusion%) do echo %%i) > exclusion.txt
REM set the file name for the logging data
set log=log-%fullstamp%.txt
REM start the backup process
echo // started backup at %logtimestamp% > %log%
echo // from %~f1 to %~f2\ >> %log%
echo ---- >> %log%
xcopy %source% %destination% /S /E /C /D /H /R /Y /V /I /EXCLUDE:exclusion.txt >> %log%
echo ---- >> %log%
del /f exclusion.txt
REM get finish time
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "logtimestamp=%YYYY%.%MM%.%DD% %HH%:%Min%:%Sec%"
echo // finished backup at %logtimestamp% >> %log%
REM move the logging
if not exist "%destination%\.backup_log" mkdir %destination%\.backup_log
move %log% %destination%\.backup_log
我会这样称呼它,假设批处理脚本称为backup.bat:
backup.bat MyFolder h:\MyFolder .metadata
MyFolder 的内容被备份到 h:\MyFolder 并且所有名为“.metadata”的文件夹都被忽略。如果 h:\ 驱动器上的文件夹“MyFolder”尚不可用,则会创建该文件夹。
该脚本的特点:
- 创建所有必要的文件夹
- 如果自上次备份以来修改了所有文件,则复制所有文件
- 在目标文件夹数据中创建一个用于记录的文件夹:.backup_log
- 创建一个日志文件,其中包含 xcopy 运行时的所有信息以及开始和停止时间的时间戳。
更新:如果您没有排除列表,请将“”作为第三个参数。