制作一个批处理文件(bat文件)来备份数据

转载 2007年09月29日 13:51:00

rem 具体测试的时候可以把下面语句设置为@echo on这样可以看到命令的执行结果
rem 也可以在最后面加上一句pause语句,执行完命令后不退出
rem 可以先测试日期目录变量,不做具体的事情,可以把copy,md,del,rmdir的语句前加rem 空格,注释前
@echo off
rem -------------------------------------get date
set dirname=%date%
rem 去除日期格式里面的分隔符-/*.:等,若是其他分隔符请另行加上
set dirname=%dirname:-=%
set dirname=%dirname:/=%
set dirname=%dirname:/=%
set dirname=%dirname::=%
set dirname=%dirname:.=%
rem 取时间后8位,根据环境,有些电脑可能要取前8位,因为日期格式不一样
set dirname=%dirname:~-8%
rem 到此为止,以上set部分主要是取得日期时间,前去掉分隔字符,然后再取前或后8位,得到20070929的形式
rem 最后是先慢慢测试下,看格式对不,比如电脑日期是不是2007929的形式(即0会去掉),相关帮助查看set /?在命令提示符下


rem ------------------------------------bak day data
rem 备份数据
rem 根据日期变量在指定的目录 d:/mrpbf 下创建 %dirname%子目录
md d:/mrpbf/%dirname%
rem 复制Mrp系统数据库文件 d:/mrp/data/*   到备份目录  d:/mrpbf/%dirname%
xcopy /Y /Q D:/mrp/data/* d:/mrpbf/%dirname%


rem 上面部分其实已经实现了按日备份,下面的可以删除掉
rem -------------------------------------------------------------
 rem 下面的部分要确保备份目录的磁盘空间能存一个月以上的数据空间,并且设置的目录绝对正确
rem -------------------------------------------------------------
rem 下面的部分看需要实现了,有一定危险


rem split date with year month day
rem -------------------------------------split
rem 以下把日期按年 4位 月2位 日2 位分开,要根据日期格式来判定各部分的位置,有些日期是年月日,有些是月日年等
set year=%dirname:~0,4%
set month=%dirname:~4,2%
set day=%dirname:~-2%

rem bak first day of month to month bak dir
rem -----------------------------------bak first day
rem 如果 日 部分为01,即每个月的1号就把该天的数据另外复制一份到一个按月备份的目录F:/mrpbfMonthYear/%dirname%
if "%day%"=="01" (
   md F:/mrpbfMonthYear/%dirname%
   xcopy /E /Y d:/mrpbf/%dirname% F:/mrpbfMonthYear/%dirname%
  )


rem 删除数据这部分比较危险,因为弄错了目录之类的,可能会删掉正常的数据,最好是手动去删除
rem 留一个月的数据备份就差不多了,所以就要删除前一个月该天的数据
rem delete a month ago data bak
rem ------------------------------------delete a month ago
rem 如果小于10月的话,就取09,08等的9,8就行了(后面一位)
if %month% LSS 10 (set month=%month:~-1%)
rem 把月份减1
set /A month=%month%-1
rem 把月份减1后,再把年月日合并起来就得到了要删除的目录名(上个月今天)
rem 如果-1得0,说明是当前是1月份,那么上个月就是去年12月份
if "%month%"=="0" (
   set year=%year%-1
   set month=12
   )

rem 如果减1后小于10,如123456789,前面就加0,变成010203......
if %month% LSS 10 (set month=0%month%)
set delDir=%year%%month%%day%
rem -----select a entry from follow
rem 两种方法,一种是删除目录,一种是删除目录下所有文件
rem del /Q /F /S d:/mrpbf/%delDir%
RMDir /Q /S d:/mrpbf/%delDir%


rem if day is 30,then delete last month 31day's bak Data
rem -----------------------------------delete 31
rem 原因有时候一个月只有30天,那么上个月有31号的31号的数据就会删不到,所以在30号的时候就判断下上个月是否有31号
rem 然后删除,一年一共才几个月,可以不这么做
rem 下面是大概思路,我并没有去实现
if "%day%"=="30" (
  rem set delLastDay=%year%%month%31
  rem RMDir /Q /S d:/mrpbf/%delLastDay%
  )
 

相关文章推荐

bat批处理文件的一个例子

qq.bat rem 关闭回显,这样只显示bat文件的命令,否则还会显示回显信息,那样很烦乱 echo off echo 你好 1 echo 你好 2 echo 你好 ...

为clojure的jar包新建一个.bat批处理文件方法

为clojure的jar包新建一个.bat批处理文件方法   步骤1:在WINDOWS中创建新建一个文本文档,然后将“新建文本文档.txt”改名为“直接运行clojureJAR包.bat”。如...

.bat批处理文件

扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。  首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示 ...

使用.bat批处理文件开机自动启动程序

我们不希望所有程序开机自动启动 , 因为我们有时需要一开机直接运行我们想使用的软件 , 却因为开机自启软件电脑开机速度被拖慢 , 我们有时候又需要开机自动启动 . 所以我教大家如何实现 . 首先关闭...

DOS批处理文件BAT的编写

转自:http://www.cnblogs.com/abdias/archive/2008/03/19/1113408.html 最近由于工作的原因,总是需要些一些命令行下的批处理文件,这些扩展名为"...

BAT批处理文件教程3+1篇

bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的角度来看,unix的shell脚本以及其***作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十...
  • aerchi
  • aerchi
  • 2012-01-12 10:33
  • 1725

(转)批处理文件(*.bat和*.cmd)语法

(转)批处理文件(*.bat和*.cmd)语法 需要用到的脚本语言还真是多,从系统管理、数据管理、程序开发。脚本语言的影子真是无处不在,孱弱的windows上的可怜的bat也是不得不时常备忘得东...

Java执行bat批处理文件(上)

bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cm...

批处理文件bat 语法备忘

一、批处理文件bat 语法备忘(学习) http://tristones.viaspeip.com/archives/001130.html 需要用到的脚本语言还真是多,从系统管理、数据管理、程序...

常用bat批处理文件命令

常用命令编辑 说明 echo、@、call、rem、pause 、goto、set是批处理文件最常用的几个命令。 echo 命令 打开回显或关闭请求回显功能,或显示消息。如...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)