之前写了一个自动备份mysql的脚本,现在还需要一个自动备份文件的脚本,所以就看了一下windows的命令,就有了下面的脚本内容:
rem ***** Resource backup start *****
@echo off
xcopy "C:\Resource" "Z:\resource_backup" /S /D /Y
@echo on
rem ***** Resource backup end *****
很简单,就是一个xcopy
命令,需要一个源路径,一个目标路径,其他都是可选参数。这里用了:
/S
复制所有非空的目录和子目录,如果没有这个参数,则只复制源根目录。/D
这个参数可以在后面跟它自己的日期参数(如:/D:mm-dd-yyyy
),表示复制指定日期或指定日期之后更改的文件。如果没有提供日期,则只复制那些源时间比目标时间新的文件。/Y
遇到目标文件存在的情况,直接覆盖而不提示确认。因为是自动备份,所以这点应该很重要。
当然,xcopy
还有很多其他参数,下面一一说一下。
Xcopy的语法:
xcopy srcPath [destPath] [/W] [/P] [/C] [/V] [/Q] [/F] [/L] [/G] [/D[:mm-dd-yyyy]] [/U] [/I] [/S] [/E] [/T] [/K] [/R] [/H] [{/A |/M}] [/N] [/O] [/X] [/exclude:FileName1[+[FileName2]][+[FileName3]] [{/Y | /-Y}] [/Z]
Xcopy的参数们
srcPath
源路径是必选的,可以是文件,也可以是文件夹。最好是绝对路径,当然,也可以是相对路径(虽然这样不太好)。
destPath
目标路径是可选的,但是如果不给该参数,则会直接拷贝到当前文件夹下,这样等于没有有效操作。
/W
在开始复制前,等待响应。
/P
提示确认是否要创建每个目标文件
/C
忽略所有错误,否则报错。
/V
写入文件时验证每个文件。
/Q
不显示消息。
/F
显示源文件和目标文件名。
/L
显示复制的文件列表。
/G
创建已经解密的目标文件,允许将没有经过加密的文件复制到不支持加密的目标。
/D[:mm-dd-yyyy]
表示复制指定日期或指定日期之后更改的文件。如果没有提供日期,则只复制那些源时间比目标时间新的文件。
/U
只复制目标文件目录中存在的文件。
/I
如果目标不存在,又在复制一个以上的文件,则假定目标一定是一个目录。如果没有该项,则会提示让用户选择这是一个 文件/文件夹
/E
复制所有子目录和空目录,该参数必须与 /T
或/S
使用。
/S
复制所有非空的目录和子目录,如果没有这个参数,则只复制源根目录。
/T
只复制目录和子目录结构,不复制文件,如果要复制空目录,则必须包含 /E
参数。
/K
复制文件时保留只读
文件的只读属性,默认情况下,xcopy将删除这些属性。
/R
复制只读文件。
/H
复制隐藏文件和系统文件。默认情况下xcopy并不复制这些文件。
{/A | /M}
/A:只复制有存档属性集的文件,但不改变属性。
/M:只复制有存档属性集的文件,并关闭存档属性。
/N
使用NTFS短文件名创建文件。
/O
复制文件所有权与随机访问控制列表信息。
/X
复制文件审核设置和系统访问控制列表信息。
/exclude:FileName1[+[FileName2]][+[FileName3]
指定排除的字符串的文件列表,例如,设置了 obj
,则obj目录下所有文件或带有.obj 扩展名的文件都将不会被复制。
{/Y | /-Y}
/Y:遇到目标文件存在的情况,直接覆盖而不提示确认。
/-Y:需要提示才能继续。
/Z
用重新启动模式复制网络文件。
文章评论