回忆起自己寒暑假在XH集训的时候,那个时候每天ZS老师都会提醒我们:「回家经常给U盘做做备份,电子产品的东西什么时候出问题你也不知道,balabala……」然而,U盘里内容越来越多,复制(备份)也要花很长时间,晚上写好代码还要看着U盘里数据移动十几分钟(因为复制完要关机),太浪费时间了……而且直接复制对于备份来说还有个缺陷。于是乎U盘自动备份的批处理文件就应运而生了。

前面说的「缺陷」,指的其实是:如果我在U盘里删除了某个文件,把U盘复制到原来的备份文件夹(重复文件覆盖),备份文件夹里面不会把我删掉的文件删除。虽然对使用没有影响,但是对强迫症的我影响还是很大的……

那么我们的批处理要做三件事:删除原来备份文件夹里的文件,复制现U盘文件进备份文件夹,关机。

首先删除文件的命令是del,加上/f可以强制删除只读文件;加上/q可以开启「安静模式」,删除全局通配符时不要求确认(实际上我们并没有让它删除全局通配符,但是我总觉得加上这个比较安静……);加上/s就是删除所有子目录中的指定文件。最后加上路径,我的路径是:D:\WT_Backup

del /f /q /s D:\WT_Backup

上面的del只能删除文件,但是不能删除目录。删除目录的命令是rd,加上/s就是删除目录下所有子目录和文件,用于删除目录树;加上/q同理是安静模式。所以使用rd命令删得更干净。

rd /s /q D:\WT_Backup

接下来就是复制了。普通的copy命令参数太少,用xcopy命令更厉害。cmd里输入xcopy /?就可以查看参数的解释(参数太多了,这里解释不过来了……)。

xcopy E:\ D:\WTDB /e /i /y /h /f

最后关机很简单:直接shutdown /s。加上echo等等的装饰就大功告成了~

最后的代码:

@echo off
title WT_BACKUPER - U盘备份批处理文件
color 0a

echo ==============================
echo BACKUPER
echo 欢迎:)
echo 即将开始备份...
echo ==============================

echo 准备清空原备份文件夹... & timeout /t 5 &
del /f /q /s D:\WT_Backup
rd /s /q D:\WTDB
echo 准备复制文件到备份文件夹... & timeout /t 3 &
xcopy E:\ D:\WTDB /e /i /y /h /f
echo WTDisk已经备份完毕。

echo 准备关机...& timeout /t 5 &
shutdown /s