![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-13 23:10 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » [原创]特强的自动备份批处理源代码 |
| 可打印版本 786 / 1 |
| 第1楼 biolover | 发表于 2004-08-11 00:00 |
| 中级用户 发帖 80 积分 300 | |
|
[原创]特强的自动备份批处理源代码 最近编辑了一系列批处理文件,用于将Windows 2000 Server的\\PC1备份到本地Windows 2K3的D:\Backup,运行效果比原来用Winrar的命令要好多了,这个备份批处理文件包括Backup.bat的备份调度文件和一系列Bck1.bat,Bck2.bat,...Bck7.bat的针对不同目录的备份执行文件,还有Del1.bat,Del2.bat,...Del7.bat的备份删除文件,备份调度的启动用Windows 2K3的计划功能进行,备份调度自动检查当前时间,每晚23点到早上8点进行备份过程,其它时间备份程序会自动退出,每三个月的1号会自动对备份中的已删除的源文件进行删除。每晚的备份工作完成后,如果时间还在7点以前,就将本地电脑休眠,将PC1源电脑关闭。上述产生的备份还包含了各个目录或文件的NTFS所有权和访问权限。
以下是执行上述功能的批处理文件源代码。注意,这些批处理文件利用了Win2K以上对DOS命令的增强功能,在Win9X系统中不能完全正确地执行,在Windows 2K或XP中不能休眠本地电脑(因为Win2K或XP中不支持shutdown /h,不过可将Win2K3的shutdown.exe拷贝到Win2K或XP中运行)。 backup.bat源代码: @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Back1@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit:Back1 call D:\BACKUP\Setting\Bat\Bck1.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Back2@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit:Back2 call D:\BACKUP\Setting\Bat\Bck2.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Back3@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit:Back3 call D:\BACKUP\Setting\Bat\Bck3.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Back4@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit:Back4 call D:\BACKUP\Setting\Bat\Bck4.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Back5@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit:Back5 call D:\BACKUP\Setting\Bat\Bck5.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Back6@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit:Back6 call D:\BACKUP\Setting\Bat\Bck6.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Back7@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit:Back7 call D:\BACKUP\Setting\Bat\Bck7.bat :month @for /f "tokens=2 delims=- " %%a in ('date /t' do if %%a==01 goto date@for /f "tokens=2 delims=- " %%a in ('date /t' do if %%a==04 goto date@for /f "tokens=2 delims=- " %%a in ('date /t' do if %%a==07 goto date@for /f "tokens=2 delims=- " %%a in ('date /t' do if %%a==10 goto dategoto shutdown :date @for /f "tokens=3 delims=- " %%a in ('date /t' do if %%a==01 goto delgoto shutdown :del @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Del1@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit el1call D:\BACKUP\Setting\Bat\Del1.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Del2@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit el2call D:\BACKUP\Setting\Bat\Del2.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Del3@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit el3call D:\BACKUP\Setting\Bat\Del3.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Del4@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit el4call D:\BACKUP\Setting\Bat\Del4.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Del5@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit el5call D:\BACKUP\Setting\Bat\Del5.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Del6@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit el6call D:\BACKUP\Setting\Bat\Del6.bat @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Del7@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GTR 07 goto exit el7call D:\BACKUP\Setting\Bat\Del7.bat :shutdown @FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A GEQ 23 goto Sleep@FOR /F "tokens=1 delims=:" %%A IN ('TIME /T' DO IF %%A LSS 06 goto Sleepgoto exit :Sleep shutdown /m \\PC1 /s shutdown /h /f :exit exit Bck1.bat源代码: xcopy \\PC1\Pub\ D:\Backup\Data\Pub\ /c /d /h /i /k /o /r /s /v /x /exclude :\Backup\Setting\Exclude\Pub.exc /y >d:\Backup\Log\Pub.logxcopy D:\Backup\Data\Pub\*.* \\PC1\Pub\*.* /c /d /h /i /l /s /y >d:\Backup\Log\DelPub.lst Del1.bat源代码: for /f "delims=" %%a in (d:\Backup\Log\DelPub.lst) do @if exist "%%a" del "%%a" xcopy D:\Backup\Data\Pub\*.* \\PC1\Pub\*.* /c /d /h /i /l /s /y >d:\Backup\Log\DelPub.lst 可以看到,在上述代码中还会调用Pub.exc、Pub.log、DelPub.lst等文件,这三个文件分别是Xcopy的文件排除列表、备份日志、备份中需删除的文件列表。 网管们可对上述文件进行修改,适应各位的工作需要,如果有好的建议,不要忘了留给我啊! biolover@freemail.china.com |
|
| 第2楼 biolover | 发表于 2004-08-15 00:00 |
| 中级用户 发帖 80 积分 300 | |
|
最近发现上述批处理中还有2个小缺陷,一是不能删除写保护的文件,而是会留下空目录,现做一点改进:1. Del1.bat的源代码中,将Del "%%a"加上/f的参数2. 在backup.bat的:shutdown上增加对Delfldrs.bat的调用,Delfldrs.bat的源代码为:for /r "D:\Backup" %%a in (.) do @rd "%%a" && (@echo "%%a" >D:\Backup\Log\DelFldrs.log)这会自动删除D:\Backup下的任何空目录,但如果该目录是写保护的还是无法删除,目前对于这一问题,尚无改进方法。另外一次目录删除只能删掉完全空的目录,对于空目录的无文件父目录要在下一次才能删除。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |