中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 07:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【求助】我需要一个定时备份批处理 查看 1,044 回复 9
楼 主 【求助】我需要一个定时备份批处理 发表于 2008-10-29 21:25 ·  中国 陕西 榆林 电信
新手上路
积分 16
发帖 11
注册 2006-10-21 06:43
19年会员
UID 67463
性别 男
状态 离线
闲来无事,利用单位的局域网做了一个私服游戏,在数据备份的时候突发奇想,能不能有一个批处理文件可以自动替代人工呢?

想了一想,我觉得既然提出来,就理想化一些,大家切磋和学习其乐融融。

我的要求是:
1、每隔一小时自动执行一次备份任务。
2、自动将D:\myspl\account和D:\myspl\my两个文件夹包括其中的所有文件整个复制到E:\bak\当前时间文件名\之下,复制过来后两个文件夹名不变,使之成为E:\bak\当前时间文件名\account和E:\bak\当前时间文件名\my。
3、当前时间文件夹名精确到月、日、时。
4、自动删除12小时前的备份文件。

谢谢大家!
2 发表于 2008-10-30 00:20 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
开始
运行
cmd
echo %date%
把结果贴出来看看
3 发表于 2008-10-30 11:23 ·  中国 重庆 联通
中级用户
★★
积分 363
发帖 162
注册 2007-04-22 21:31
19年会员
UID 86104
性别 男
状态 离线
是不是能达到要求?
每个整点备份指定的两个路径里所有文件到指定路径下,以WINRAR生存EXE自解压文件形式,以日期时间格式保存,只存在12个备份文件,删除12小时前的备份,自己测试下。要安装WINRAR,不然出错


@echo off
if "%USERNAME%"=="" goto 2

set/p unbak= 卸载输入,其它键安装:
if /i "%unbak%"=="u" schtasks /delete /tn "gamebak" /f &pause&exit
net start | find /i "Scheduler" >nul 2>nul
If %Errorlevel% GTR 0 sc config schedule start= auto >nul 2>nul&&net start schedule >nul 2>nul
schtasks /delete /tn "gamebak" /f >nul 2>nul
schtasks /create /sc HOURLY /mo 1 /st 00:00:00 /tn "gamebak" /ru system /tr "%~f0" >nul 2>nul

:2
for /f "tokens=1,2 delims=:" %%a in ('reg query HKCR\WinRAR\DefaultIcon /ve^|find "WinRAR.exe"') do (
set patha=%%a
set pathb=%%b
)
if not exist "%patha:~-1,1%:%pathb:~0,-13%\Rar.exe" echo 请安装WinRar & ping -n 5 127.1>nul&exit

set tobak=D:\myspl\account D:\myspl\my
set bakpath=E:\bak
if not exist %bakpath% echo 错误!不存在路径:&ping -n 3 127.1>nul&exit

set/a hourn=%time:~0,2%*1
"%patha:~-1,1%:%pathb:~0,-13%\Rar.exe" a -m5 -sfx "%bakpath%\%date:~5,5%-%hourn%" %tobak%

if %hourn% GEQ 12 (set/a hourn=%hourn%-12) else (set/a hourn=%hourn%+12)
if exist "%bakpath%\%date:~5,5%-%hourn%.exe" del/f/q "%bakpath%\%date:~5,5%-%hourn%.exe"

exit


[ Last edited by clian76 on 2008-10-30 at 11:28 ]
4 发表于 2008-10-30 11:33 ·  中国 重庆 联通
中级用户
★★
积分 363
发帖 162
注册 2007-04-22 21:31
19年会员
UID 86104
性别 男
状态 离线
路径有变化的话改这两句代码:
set tobak=D:\myspl\account D:\myspl\my ::这里可以跟多个路径,以空格隔开。路径包含空格路径加”号。
set bakpath=E:\bak 这个是备份路径.
5 发表于 2008-11-03 10:42 ·  中国 北京 鹏博士BGP
新手上路
积分 7
发帖 4
注册 2008-03-25 12:33
18年会员
UID 113955
性别 男
状态 离线
请教楼上,一定要用WINRAR吗?

如果我想买天晚上11.30拷贝这两个文件,如何改命令?谢谢.
6 发表于 2008-11-03 12:34 ·  中国 重庆 联通
中级用户
★★
积分 363
发帖 162
注册 2007-04-22 21:31
19年会员
UID 86104
性别 男
状态 离线
每天23:30拷贝:
schtasks /delete /tn "gamebak" /f >nul 2>nul
schtasks /create /sc HOURLY /mo 1 /st 00:00:00 /tn "gamebak" /ru system /tr "%~f0" >nul 2>nul
改成:
at 23:30 /every:m,t,w,th,f,s,su "%~f0"

可以不用WINRAR,用CMD的XCOPY命令复制文件夹。
7 发表于 2008-11-04 12:34 ·  中国 陕西 宝鸡 岐山县 电信
新手上路
积分 16
发帖 11
注册 2006-10-21 06:43
19年会员
UID 67463
性别 男
状态 离线
谢谢clian76的热心帮助。
遗憾的是我今天才看到你的回复,论坛前几天是不是又有什么问题,进不来。

代码已收藏,今天下午去单位测试,然后反馈给你结果,不过这个结果我想至少也得24小时之后。

再次谢谢你和诸位看官。
8 发表于 2008-11-04 12:53 ·  中国 北京 鹏博士长城宽带
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
Originally posted by whiteyoo at 2008-11-4 12:34:
谢谢clian76的热心帮助。
遗憾的是我今天才看到你的回复,论坛前几天是不是又有什么问题,进不来。

代码已收藏,今天下午去单位测试,然后反馈 ...


晕,代码不通过测试你就敢直接用?你NB

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
9 发表于 2008-11-08 22:41 ·  中国 陕西 榆林 电信
新手上路
积分 16
发帖 11
注册 2006-10-21 06:43
19年会员
UID 67463
性别 男
状态 离线
已经测试,不成功,提示reg不是可执行程序,我是2000系统服务器版
10 Re 9楼 发表于 2008-11-08 23:14 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Win2k系统里面没有reg命令,3楼使用这个命令是为了通过读取注册表来自动获取WinRAR的安装路径。从顶楼的描述来看,你只需要备份不需要压缩,因此可将3楼代码中关于压缩的那部分删除即可。

如果出于兴趣想试试备份的同时进行压缩,可以在代码中指定WinRAR的安装路径,而不使用3楼自动获取的方法。

如果一定要自动获取WinRAR的安装路径,可以在BAT中调用VBS来读注册表。
论坛跳转: