防患于未然——自动备份收藏夹
乾坤一笑[smileonce] smileonce@126.com?? 2004-8-12
版权所有 转载请注明出处 http://blog.csdn.net/smileonce
天灾人祸呀,昨天晚上没睡好觉;今天早上一起来,ghost系统时忘记先备份收藏夹了。我的天,那是我整整一个月的心血呀!完了,没有了,遂决定以后一定要做好备份工作。
其实,像我这种没脑子的,要是能够在ghost之前想起来备份那才怪呢。最好是能够系统在后台自动替我完成这件事。Okey,作为Coder,自己写个程序来解决吧!
抓起VC6就开始写,顺便也练习一下C++,我刚学。
一写,犯难了。用老语法还是用新语法(standard C++)? 用MFC还是SDK? 支持全部的Win9x/win2k/win2003/winxp? 对winNT系统来说,支持多用户不?启动程序是放在启动菜单里面还是放在注册表里面?导出的文件用xml还是用ini还是原样保存?如果用ini是用msxml还是用libxml2 ? 甚至于就是连字符串是用char[]还是string还是CString都很犹豫不决。 结果不用提了,1个小时也没有完成这个程序。-_-! 谁让我是笨笨笑呢?!!!
换个角度一想,其实目的很单纯:就是自动在后台备份,用户操作越少越好,这个程序的应用面越宽越好。(所谓应用面宽,就是换个系统、换个环境、换个目录,都能不改动代码,或者尽量少改动代码,还能够使用。^_^)这么一想,就有门了,用bat吧,结果我不到5分钟就搞定了他。嘿嘿。
闲言少叙,书归正传! 假设我的收藏夹放在D:\Documents and Settings\Administrator\Favorites里面,我的备份的目录是:\docbak\favlink。okey,我现在要把批处理程序放在G:\docbak\favlink里面,然后把收藏夹备份到:\docbak\favlink\bak里面。
先写一个bat程序,进行目录下所有文件的递归copy。这个程序取名为copyfav.bat,代码如下:
@echo off
rem This file saved as copyfav.bat.
rem author: smileonce
rem Email : smileonce@126.com
set ss="%USERPROFILE%\Favorites"
set dd=%cd%\bak
if exist bak1 goto docopy
md %cd%\bak
:docopy
xcopy %ss% %dd% /E/Y/D > nul
然后呢,创建copyfav.bat的快捷方式到开始菜单的启动文件夹内(就是用鼠标右键点着copyfav.bat,一直把他拖到开始菜单的启动文件夹,松开右键,选择创建快捷方式)。注意:一定放在启动菜单里面的一定要是copyfav.bat快捷方式,把copyfav.bat这个文件直接复制过去是不可以的。
okey,大功告成了,每次启动系统,都会自动给你备份收藏夹了。
By the way,重装系统如何恢复?我想你也该会了吧?仿照copyfav.bat很好写出。在copyfav.bat所在的文件夹里建立一个restore.bat程序,代码如下:
@echo off
rem This file saved as restore.bat.
rem author: smileonce
rem Email : smileonce@126.com
set ss=%cd%\bak
set dd="%USERPROFILE%\Favorites"
:docopy
xcopy %ss% %dd% /E/Y/D > nul
以上代码在win2003下通过,其他环境下需要看看有没有%USERPROFILE%这个环境变量,没有的话,对应的修改一下bat程序。