BAT脚本中ForFiles、Xcopy、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 扩展名的文件。
xcopy G:\WebSites\BuytoySolutionV2\WebAppBuytoy web /EXCLUDE:web_exclude.txt /i /e /y
web_exclude.txt:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.cs
.vb
.rar
\App_Themes\Theme1
\App_Themes\Theme1\
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/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、Xcopy、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,若要添加密码加入-pXXXX,如果密码为123,则-p123
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 ***结束***
最后就是添加计划任务,这个大家应该都会,也可以在server2008、XP下使用,不过XP下不一定自带有ForFiles.exe文件,复制过去就可以用了。



无觅相关文章插件,快速提升流量

评论已关闭!