我的方法相对比较保守点了。呵呵,代码如下。
- echo wscript.echo dateadd("d",-0,date) >%tmp%\tmp.vbs
- for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
- for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
- for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
- if %m% LEQ 9 set m=0%m%
- if %d% LEQ 9 set d=0%d%
- set/a nowdate = %y%%m%%d%
- rem ----------上面是找出今天的日期,并赋值给 %nowdate%
- for /f "tokens=*" %%i in (%tmp%\time.tmp) do set nowtime=%%i
- set nowtime=%nowtime:~-5%
- rem --------这是找出当前时间,之所以加了后面这句话,是因为有些机子设了显示星期,这会成为障碍,所以设了后面这句来除去星期。
- echo wscript.echo dateadd("d",-%keepdays%,date) >%tmp%\tmp.vbs
- for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
- for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
- for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
- if %m% LEQ 9 set m=0%m%
- if %d% LEQ 9 set d=0%d%
- set/a beforneeddays=%y%%m%%d%
- rem ------上面这些是找出指定的日期,比如说,五天前,这个几天用%keepdas%来指定。
- echo Today is [%nowdate%], this number will be new backup destrination directory...
- rem -----这里只是显示一下工具进度。
- md %usbdisk%\%nowdate% >nul 2>nul
- rem ----这里是仓建以今天日期为名的目录,这个%usbdisk%是变量,如何找,这里不贴了。
- dir %usbdisk%\ /ad/on/b>%tmp%\usbdir.tmp
- rem ------这里是列出U盘中所有的目录并生成一个临时文件备查。
- for /f "delims=" %%i in (%tmp%\usbdir.tmp) do (
- if %%i lss %beforneeddays% (
- rd /s/q %usbdisk%\%%i
- )
- )
- rem -----至于这里,就不用说了吧,就是删除指定早于天数前的目录数据。
复制代码
关于类似的备份程序,我早写好了,并已经实现以下功能:
=====================================================
Auto USB Disk Backup 1.03
Written By Robert.King
2008.08.28
=====================================================
注意:
1.这个程序只保留用户指定天数内的备份,如果有早于这个天数的备份数据,则会被本程序自动清除,
您需要注意一下。如果早期备份有重要数据,请自行更改目录名,目录名命名规则只要不是全数字
就可以了,建议全用字母。
2.本程脚本只能向 USB 移动存储设备中存储备份数据!
3.本程序脚本只适用于
Microsoft Windows XP 中、英文发行版
Microsoft Windows 2003 中、英文发行版
4.使用前,请确定您的系统中的wmic可正常工作!确认方法:
点击:开始----运行-----输入CMD回车-----输入wmic回车-----输入exit回车-----输入exit回车
5.本程序调用了微软的 devcon.exe 和 choice.exe 这两个程序,请保证在 Windows\System32 目录
中或本程序当前所在目录中这个两程序存在。
本次更新内容:
--修正了磁盘空间容量数据超过变量精度范围问题,把容量精度修改为M
--添加了两个配置文件,更方便用户自己定义备份操作
--增强了程序在备份过程中的容错性
--细化了一部份日志记录的详细性
一、使用方法:
在程序脚本所在目录中有四个配置文件:
path.ini --> 您需要备份的数据在什么位置,注意!每行结尾一定要是以"\"符号作为结尾的。
datatype.ini --> 如有需要特殊指定只备份哪些类型的文件,则写在这个文件中。
keepdays.ini --> 非常重要,在这个文件中指定你需要保留几天的备份,注意,文件内容只能是纯数字!
UDlabel.dat --> 指定备份盘的卷标!
您只需把您需要备份的文件路径写入 path.ini 中,然后双击运行backup.bat这个脚本即可实现全自
动备份。
注意:配置文件内容不可为空内容!
如果您只想备份其中几种类型的文件,只需修改datatype.ini文件即可,默认本文件中写的是"*.*"
即所有的文件,比如,您只想备份Word文档和纯文本文档,您只需将文件内容改成如下即可:
*.doc
*.txt
注意:在以上四个配置文件中不可以存在空行!
备份时,将以YYYYMMDD的日期形式,在USB移动存储设备中建立目录,如果有多重配置,则会按配置文
件中的顺序,建立从数字1开始的子目录来对应不同配置备份。
二、程序功能:
1.本程序脚本可以自动从配置文件中读取相关配置信息,并自全自动完成备份工作;
2.在备份过程中,本程序脚本可全自动搜索 USB 移动存储设备,并设定其为目标磁盘;
3.如果您是长时间连续备份,则无需拔下USB移动存储设备,本程序会自动挂载 USB移动存储设备,并
在备份完成后,自动卸载您的 USB移动存储设备,以使其脱机,保证数据安全,同时保护 USB移动
存储设备 的使用寿命;
4.如备份时,您没有接入 USB 移动存储设备,则程序会报警,并等待三十秒钟,则您有三十秒时间可
以接驳您的USB存储设备;(技巧提示:如果您需要更多时间准备,可以选重试,以再获得三十秒。)
5.所有的工作都将被记录进程序脚本所在的目录中的备份文日志记录文件中,文件名为 backup.log,
以便于日后查阅以前的备份工作日志记录;
6.另外,本程序脚本只适用于中英文版操作系统,其它语种操作系统未经测试,暂时视为不支持。
三、程序容错
1.本程序脚本在备份时,自动探测所需备份的数据是否超过 USB 移动存储设备的剩余空间大小,如果
超出,则会报警提示,并跳过当前一行配置备份,然后继续下一配置的备份,并输出记录到日志文件
中备查;
2.支持自动判断配置文件丢失或空配置错误,并输出记录到日志文件中备查;
3.可以发现配置格式正确,但是又无与之匹配文件与之对应的错误,程序会自动跳过这部份备份,并输
出记录到日志文件中备查;
4.如果指定类型文件并不存在,则本程序会跳过当前这个类型,继续备份。
四、建议
1.强烈建议在使用本程序备份时,USB 移动存储设备专盘专用,因涉及旧备份数据清除问题,所以,为
了避免给您造所不必要的损失,请尽可能专盘专用。
2.如果备份时间存在断层,比如,十月一日放长假,时间超过用户指定的天数,则,建议在运行本程序
前,请先手 将旧的备份文件移动到一个自己新建的目录中。
注意:在自建目录时,请不要使用数字命名,而以字母命名。
五、关于
本程序脚本为Robert.King独立制做完成,作者不希望这份程序被随意拷贝及使用,但不拒绝对其进行研
究测试,如果您有更好的想法或建议,可以直接联系作者本人:
文件列表:
backup.bat-----------主程序文件
datatype.ini------------配置文件:定义要备份的数据文件类型
path.ini----------------配置文件:定义用户需备份数据所在的路径
keepdays.ini------------配置文件:定义用户需保留几天的备份
UDlabel.dat-------------信息文件:保存外置USB存储器的相关信息
reginfo.txt-------------本机注册信息文件
devcon.exe--------------本程序运行所必需的命令(提取自微软开发工具)
CHOICE.EXE--------------本程序运行所需的命令行(提取自Windows 2003)
scaninfo.exe------------本程序运行所必需的命令
readme.txt--------------本说程序的说明文件
backup.log--------------本程序在工作时生成的日志文件
Makereg.BAT-------------注册码生成器
[ 本帖最后由 AppleWolf 于 2008-9-6 01:46 编辑 ] |