Windows server 2003中forfiles.exe、Xcopy.exe、WinRAR 共同备份实例
一、forfiles语法和实例
语法:FORFILES [/P pathname] [/M searchmask] [/S]
      [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
描述:
选择一个文件(或一组文件)并在那个文件上
执行一个命令。这有助于批处理作业。
参数列表:
/P pathname    表示开始搜索的路径。默认文件夹是当前工作的
                     目录 (.)。
/M searchmask 根据搜索掩码搜索文件。默认搜索掩码是 '*'。
/S                指导 forfiles 递归到子目录。像 "DIR /S"。
/C command    表示为每个文件执行的命令。命令字符串应该
                     用双引号括起来。
                     默认命令是 "cmd /c echo @file"。下列变量
                     可以用在命令字符串中:
                     @file - 返回文件名。
                     @fname - 返回不带扩展名的文件名。
                     @ext     - 只返回文件的扩展。
                     @path - 返回文件的完整路径。
                     @relpath - 返回文件的相对路径。
                     @isdir - 如果文件类型是目录,返回 "TRUE";
                                  如果是文件,返回 "FALSE"。
                     @fsize - 以字节为单位返回文件大小。
                     @fdate - 返回文件上一次修改的日期。
                     @ftime - 返回文件上一次修改的时间。
                     要在命令行包括特殊字符,字符请以 0xHH
                     形式使用十六进制代码(例如,0x09 为 tab)。
                     内部 CMD.exe 命令前面应以 "cmd /c" 开始。
/D date       选择文件,其上一次修改日期大于或等于 (+),
                     或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日
                     或选择文件,其上一次修改日期大于或等于 (+)
                     当前日期加 "dd" 天,或者小于或等于 (-) 当前
                     日期减 "dd" 天。有效的 "dd" 天数可以是
                     0 - 32768 范围内的任何数字。如果没有指定,
                     "+" 被当作默认符号。
/?                显示帮助消息。
例如:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.txt
FORFILES /D 2008-11-24
         /C "cmd /c echo @fname 在 2008年11月24日就是新的。"
FORFILES /D +2008-11-24/C "cmd /c echo @fname 今天是新的。"
FORFILES /M *.txt /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
rem ***删除备份N天前的*.sql文件
forfiles /P D:\BACK /M *.sql -D -N /C "cmd /c del /f @path"
二、Xcopy语法
XCOPY source [destination] 参数(如 /s /e)
source 指定要复制的文件。
destination 指定新文件的位置和/或名称。
/A 只复制有存档属性集的文件, 但不改变属性。
/M 只复制有存档属性集的文件, 并关闭存档属性。
/D:m-d-y 复制在指定日期或指定日期以后改变的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
/EXCLUDE:file1[+file2][+file3]...
指定含有字符串的文件列表。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。
例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有 .obj 扩展名的文件。
/P 创建每个目标文件前提示。
/S 复制目录和子目录,除了空的。
/E 复制目录和子目录,包括空的。 与 /S /E 相同。可以用来修改 /T。
/V 验证每个新文件。
/W 提示您在复制前按键。
/C 即使有错误,也继续复制。
/I 如果目标不存在,又在复制一个以上的文件, 则假定目标一定是一个目录。
/Q 复制时不显示文件名。
/F 复制时显示完整的源和目标文件名。
/L 显示要复制的文件。
/G 允许将没有经过加密的文件复制到不支持加密的目标。
/H 也复制隐藏和系统文件。
/R 改写只读文件。
/T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。
/U 只复制已经存在于目标中的文件。
/K 复制属性。一般的 Xcopy 会重设只读属性。
/N 用生成的短名复制。
/O 复制文件所有权和 ACL 信息。
/X 复制文件审核设置(隐含 /O)。
/Y 禁止提示以确认改写一个现存目标文件。
/-Y 导致提示以确认改写一个现存目标文件。
/Z 用重新启动模式复制网络文件。
例如:xcopy D:\源文件夹\Log E:\目标文件夹\Log\log(%date:~0,10%)_back /D:3-19-2009 /I

三、WinRAR语法
    用法:     rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件>
               <@列表文件> <解压路径\>
<命令>
  a             添加文件到压缩文件
  c             添加压缩文件注释
  cf            添加文件注释
  cw            写入压缩文件注释到文件
  d             删除压缩文件中的文件
  e             解压压缩文件到当前目录
  f             刷新压缩文件中的文件
  i[参数]=<串>  在压缩文件中查找字符串
  k             锁定压缩文件
  l[t,b]        列出压缩文件[技术信息,简洁]
  m[f]          移动到压缩文件[仅对文件]
  p             打印文件到标准输出设备
  r             修复压缩文件
  rc            重建丢失的卷
  rn            重命名压缩文件
  rr[N]         添加数据恢复记录
  rv[N]         创建恢复卷
  s[名字|-]     转换压缩文件为自解压格式或转换回压缩文件
  t             测试压缩文件
  u             更新压缩文件中的文件
  v[t,b]        详细列出压缩文件[技术信息,简洁]
  x             用绝对路径解压文件
<开关>
  -             停止扫描
  ac            压缩或解压后清除存档属性
  ad            添加压缩文件名到目标路径
  ag[格式]      使用当前日期生成压缩文件名
  ao            添加具有压缩属性的文件
  ap<格式>      添加路径到压缩文件中
  as            同步压缩文件内容
  av            添加用户身份校验(仅注册版本可用)
  av-           禁用用户身份校验
  c-            禁用注释显示
  cfg-          禁用读取配置
  cl            名称转换为小写
  cu            名称转换为大写
  df            压缩后删除文件
  dh            打开共享文件
  ds            对固实压缩文件禁用名称排序
  e[+]<属性>    设置文件排除和包括属性
  ed            不添加空目录
  en            不添加"压缩文件结束"标志
  ep            从名称中排除路径
  ep1           从名称中排除基本目录
  ep2           展开为完整路径
  ep3           扩展路径为包含盘符的完全路径
  f             刷新文件
  hp[密码]      同时加密文件数据和文件头
  id[c,d,p,q]   禁用消息
  ieml[属性]    用 E-mail 发送压缩文件
  ierr          发送所有消息到标准错误设备
  ilog[名称]    把错误写到日志文件(只有注册版本可用)
  inul          禁用所有消息
  ioff          完成一个操作后关闭 PC 电源
  isnd          启用声音
  k             锁定压缩文件
  kb            保留损坏的已解压文件
  m<0..5>       设置压缩级别(0-存储3-默认5-最大)
  mc<参数>      设置高级压缩参数
  md<大小>      以KB为单位的字典大小(64,128,256,512,1024,2048,4096 or A-G)
  ms[ext;ext]   指定存储的文件类型
  n<文件>       仅包含指定的文件
  n@            从标准输入设备读取文件名到包括
  n@<列表>      在指定的文件列表包括文件
  o+            覆盖已存在文件
  o-            不覆盖已存在文件
  oc            设置 NTFS 压缩属性
  os            保存 NTFS 流
  ow            保存或恢复文件所有者和组
  p[密码]       设置密码
  p-            不询问密码
  r             递归子目录
  r0            仅递归通配符名称的子目录
  ri<P>[:<S>]   设置优先级(0-默认,1-最小..15-最大)和以毫秒为单位的休眠时间
  rr[N]         添加数据恢复记录
  rv[N]         创建恢复卷
  s[<N>,v[-],e] 创建固实压缩文件
  s-            禁用固实压缩文件
  sfx[名称]     创建自解压压缩文件
  st[名称]      从标准输入设备读取数据(stdin)
  t             压缩后测试文件
  ta<日期>      添加日期 <日期> 后修改的文件,日期格式 YYYYMMDDHHMMSS
  tb<日期>      添加日期 <日期> 前修改的文件,日期格式 YYYYMMDDHHMMSS
  tk            保留原始压缩文件时间
  tl            设置压缩文件时间为最新文件时间
  tn<时间>      添加 <时间> 以后的文件
  to<时间>      添加 <时间> 以前的文件
  ts<m,c,a>[N]  保存或恢复文件时间(修改,创建,访问)
  u             更新文件
  v             自动检测创建卷的大小或者列出所有的卷
  v<大小>[k,b]  创建卷大小=<大小>*1000 [*1024, *1]
  vd            创建容量前清除磁盘内容
  ver[n]        文件版本控制
  vn            使用旧风格的卷命名方案
  vp            每卷之前暂停
  w<路径>       指定工作目录
  x<文件>       排除指定的文件
  x@            从标准输入设备读取要排除的文件名
  x@<列表>      排除指定列表文件中的文件
  y             假设对全部询问都回答是
  z<文件>       从文件读取压缩文件注释
四、Windows server 2003中forfiles.exe、Xcopy.exe、WinRAR 共同备份实例
rem **************************************
rem 用于windows server 2003 做计划任务
rem 一、使用MySQL备份功能导出
rem *************************************
@echo off
rem ***备份库数据库文件到D:\BACK\数据库文件(%date:~0,10%).SQL
rem ***注意数据库密码不要有特殊符号,例如“(”
D:\MySQL\bin\mysqldump -uroot -p密码 --opt 数据库名称 >> D:\BACK\数据库名称(%date:~0,10%).sql
rem ***启动WinRAR压缩*.sql文件
C:\progra~1\winrar\winrar.exe a -k -r -s -ibck D:\BACK\文件名称(%date:~0,10%).rar D:\BACK\*.sql
rem ***删除备份N天前的*.sql文件
forfiles /P D:\BACK /M *.sql -D -N /C "cmd /c del /f @path"
rem ***删除N天前的*.rar文件
forfiles /P D:\BACK /M *.rar -D -N /C "cmd /c del /f @path"
rem ***结束***
rem ****************************************
rem 用于windows server 2003 做计划任务
rem 二、使用windows copy功能复制MySQL库文件
rem ****************************************
@echo off
rem ***直接复制数据库文件夹到D:\临时文件夹\数据库名称(%date:~0,10%)_back
xcopy D:\MySQL\data\acc_db D:\DBbackUP\acc_db(%date:~0,10%)_back /I
rem ***压缩“临时文件夹”下的文件为:BACK日期.rar,若要删除原文件加入-df
rem C:\progra~1\winrar\winrar.exe a -ag -k -r -s -df -ibck -ep1 d:\BACK\BACK.rar d:\临时文件夹\
C:\progra~1\winrar\winrar.exe a -ag -k -r -s -ibck -ep1 d:\BACK\BACK.rar d:\临时文件夹\
rem ***删除N天前的文件(一天 -D -1)
forfiles /P D:\BACK -D -N /C "cmd /c del /f @path"
rem ***结束***
五、在Windows server 2003添加计划任务
    这个大家都会吧,我就略过了,要是疑问给我留言哦……
 
也可以在2000、XP下使用,用来做批处理文件很好用!