[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求助!如何用批处理压缩文件~!并删除原有文件~!

现在的情况是这样的,我需要将SQL中的某个数据库备份,所以写了一个批处理为以下:
@echo off
set path=%path%;c:\program files\microsoft sql server\80\tools\binn
osql -Usa -P -Swt107 -ibackup.sql
echo

调用内容backup.sql如下:
declare @sql varchar(100)
select @sql='e:\cs.bak'
backup database cs to [email=disk=@sql]disk=@sql[/email]
go

备份工作上面就算是完成了。

后面同时需要 将cs.bak文件压缩后,
放到D盘根目录下,
压缩需要按照日期生成文件,
并且要删除原有的CS.bak文件。
按照日期,删除五天前的压缩数据,
保留最近五天(以系统日期为准)~!

同时需要注意,备份操作完成前 不要执行压缩操作。
求高手帮助解决。

终于我自己找到了方法 但是 还有些问题 如果将批处理文件与备份文件放一起 ,怎么不让批处理文件被删除掉,一下是语句
@echo off
rem 指定压缩临时文件删除位置
Del /a/f/s/q "D:\BFDATA\BFYS\*.*"
rem 在下面指定待删除文件夹的存放路径
set SrcDir=d:\bfdata
rem 在下面指定存放天数
set DaysAgo=5
for /f "skip=2 delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
  set "RegDateOld=%%a"
)
set RegDateOld=%RegDateOld:~-8%
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
>"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
>>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
  set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
for /r "%SrcDir%" %%a in (*.*) do (
  if "%%~ta" leq "%DstDate%" (
    if exist "%%a" (
      del /f /q "%%a"
    )
  )
)
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
rem 在下面指定SQL路径
set path=%path%;c:\program files\microsoft sql server\80\tools\binn
rem 在下面指定服务器用户名,密码,机器名称以及backup.sql文件路径
osql -Usa -P -Swt107 -iD:\BFDATA\backup.sql
rem 压缩文件放于指定目录
path C:\Program Files\WinRAR
winrar.exe a -ag -k -r -s -ibck -inul D:\BFDATA\BF.rar D:\BFDATA\bfys -r

echo

TOP

返回列表