回忆起自己寒暑假在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
April 26th, 2018 at 08:13 pm
好方便好机智啊Orz