中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 23:48
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于数据库压缩的问题,这个有挑战性,请高手进。 查看 968 回复 3
楼 主 关于数据库压缩的问题,这个有挑战性,请高手进。 发表于 2009-06-16 00:48 ·  中国 河北 邯郸 电信
新手上路
积分 2
发帖 2
注册 2009-05-19 07:18
17年会员
UID 145448
性别 男
状态 离线
用SQL 自动备份数据库 生成在D:\BAK\ 目录里,生成的文件名是 MyDb_20090615完全备份.BAK 。

现在想压缩数据库,并且删除原文件。

问题就是 自动备份的数据库名字每天都变 今天是MyDb_20090615完全备份.BAK 明天就是MyDb_20090616完全备份.BAK

怎么让RAR自动识别,然后压缩该数据库。
2 发表于 2009-06-17 02:17 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
cmd /c "C:\Program Files\WinRAR\WinRAR.exe" m -ag -cfg- -ibck -inul -m5 -s -y "D:\BAK\MyDb_" "D:\BAK\MyDb_%date:~0,4%%date:~5,2%%date:~8,2%完全备份.BAK"

如果觉得上面的命令过长,可以使用批处理:

@echo off
set han=D:\BAK\MyDb_%date:~0,4%%date:~5,2%%date:~8,2%
"C:\Program Files\WinRAR\WinRAR.exe" m -afrar -cfg- -ibck -inul -m5 -or -s -y %han% %han%完全备份.BAK
pause&exit


说明:
%date%变量示例为2009-06-17 星期三


winrar的命令开关说明:
命令 M - 移动文件和文件夹到压缩文件(即压缩后删除源目标文件)
开关 -AG - 以当前日期与时间生成压缩文件名
开关 -AF<类型> - 指定压缩文件格式
开关 -CFG- - 忽略默认配置和环境变量
开关 -DR - 压缩后清除文件。删除文件前使用0字节覆盖文件数据,防止文件被恢复。
开关 -IBCK - 在后台运行 WinRAR
开关 -INUL - 禁用错误信息
开关 -IOFF - 关闭 PC 电源
开关 -M<n> - 设置压缩方式
开关 -OR - 如果相同名字的文件已经存在则自动重命名解压的文件。
开关 -S - 创建固实压缩文件
开关 -Y - 假设全部的询问回应皆为“是”
开关 -TA<日期> - 只处理指定日期之后修改的文件
开关 -TB<日期> - 处理制定日期之前修改的文件
开关 -TN<时间> - 处理比指定时间新的文件
开关 -TO<时间> - 处理比指定时间旧的文件


楼主注意发贴格式和主题,免得俺回完了总被删。。。

[ Last edited by Hanyeguxing on 2009-6-17 at 02:39 ]
3 发表于 2009-06-17 23:10 ·  中国 河北 保定 电信
新手上路
积分 2
发帖 2
注册 2009-05-19 07:18
17年会员
UID 145448
性别 男
状态 离线
谢了,试验成功了!不过还有一个问题,我想把备份的最新文件传到另一个机子上去做异地备份,如何做呢?自动的。。 这个目录下有若干备份的数据库,如何才能识别哪个是最新的?

[ Last edited by zmrmyll on 2009-6-17 at 23:25 ]
4 发表于 2009-06-18 00:19 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
以上面批处理为例子,做出的备份压缩名称就是D:\BAK\MyDb_20090617.rar,这个就应该是最新的。如果一天进行了多次备份压缩,则可以使用:

@echo off
set han=D:\BAK\MyDb_%date:~0,4%%date:~5,2%%date:~8,2%
"C:\Program Files\WinRAR\WinRAR.exe" m -afrar -cfg- -ibck -inul -m5 -or -s -y %han% %han%完全备份.BAK
for /f "delims=" %%i in ('dir "D:\BAK\MyDb_*.rar" /b /s /od /a-d') do set ye=%%i
set gu0=hanyeguxing\
set gu1=UC30194447
set gu2=UC34886634
set xing=Computer
net use \\%xing%\ipc$ "%gu2%" /user:"%gu1%" >nul 2>nul
copy "%ye%" "\\%xing%\F$\%gu0%" /v /y /z
net use \\%xing%\ipc$ /del >nul 2>nul
pause&exit

::说明:该批处理仅用于局域网文件传输
::变量gu0为要传输的路径,这里设置为远程计算机的的F:\hanyeguxing\
::变量gu1为IPC$连接的用户名
::变量gu2为IPC$连接的用户的密码
::变量xing为指定远程计算机的名称或 IP 地址。


[ Last edited by Hanyeguxing on 2009-6-18 at 13:18 ]
论坛跳转: