求个自动备份的脚本,可以是批处理,或者vbs
发布网友
发布时间:2022-04-22 04:09
我来回答
共2个回答
热心网友
时间:2023-07-24 12:52
Xcopy&bat&Vbs 实现数据自动备份
可以用xcopy实现,即:xcopy obt\*.* C:\Windows\OBT\ /s /e
XCOPY 还有众多的功能,是加参数来完成的。上面的/s /e 参数的作用分别是把子目录和空目录都复制过去,一些使用举例和参数说明如下:
1、如只是单纯地复制 E:\ 盘上所有文件到 D:\ 盘上,就输入" xcopy e:\*.* d: /s /h "就行啦!如果在复制过程中,你不要它复制文件,可
以按键盘热键"Ctrl " +"Pause /break" 二个热键 来中断复制。
2、如果想把E:\ 盘上所有文件复制到D:\盘上,分为今天复制一点,明天再接着复制一些,后天再接着复制一些。或者是某种原因上次没有复
制完成,今天想接着复制。(这种情况是经常在复制文件中出现的)那可怎么办才好呢?输入“ xcopy e:\*.* d: /s /h /d /y ”就行。他能
查出那些文件是已经复制过去啦,那些文件还没有复制过去的。
3、当然我们也会碰到这种情况,一些文件我们已经修改过啦!网上面又有最新版本的啦。原来备份的那份文件我们要及时更新啦。那怎么才能
同步更新呢?当然我们可以把最新的好份文件复制过去,这也是一种解决办法。如果修改的文件有很多的,自己到时候也记不清楚那份文件是
更新过的。这么多的原来备份的那份文件都要更新,都要复制过去,可不是件省力气的活,而且容易出错和忘记一些文件!和上面一样也同样
输入" xcopy e:\*.* d: /s /h /d /y "就解决了!
4、还有一种情况我们经常也碰到的,因为复制某个文件出错或者这个文件在使用中,而停止了复制工作,(比如,复制C 盘上的 windows xp
)我们这时候想跳过某个出错的文件和某个正在使用中文件而继续复制其他文件。再多加入一个参数" /c "就是 " xcopy e:\*.* d: /s /h /d
/c /y "就行啦!
5、有时候我们想XCOPY 变为自动复制,并且复制完成后关闭电脑,可以建立一个批处理文件,新建文本文档,更名为XCOPY.BAT 当然扩展名原
来是TXT 格式的要更名为BAT 在这个 XCOPY.BAT 中输入
xcopy e:\*.* d: /s /h /c /y
shutdown -s
然后双击xcopy.bat 运行它,你这时候可以出去玩啦。电脑会自己复制备份完成文件然后自动关闭电脑。
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 用重新启动模式复制网络文件。
copy命令DOS 下可以用.DOS里不能直接用xcopy
xcopy是外部命令,需要有xcopy.exe这个文件来支持.
可能是系统没有设置path环境变量的值,而xcopy.exe又不在当前目录下,这样系统就找不到xcopy.exe这个文件。
如果你使用的是Win 2000,可以先使用命令:
set path=%path%;c:\winnt;c:\winnt\system32
如果用的是win XP,可以先使用命令:
set path=%path%;c:\windows;c:\windows\system32
再用命令:
xcopy c:\docume~1\hp d:\hp /s
另一种方法是:
如果用的是win 2000,可以先使用命令:
cd c:\winnt\system32
如果用的是win XP,可以先使用命令:
cd c:\windows\system32
再用命令:
xcopy c:\docume~1\hp d:\hp /s
cd c:\windows\system32
xcopy F:\公司文件\*.* G:\ /s /e /h /d /c /y
来个简单点的,建立backup.bat,内容如下(不包括说明):
@echo off
cd C:\windows\system32
#进入系统C:\windows\system32
rem if exist G:\文件内容 rd /s /q G:\文件内容
#如果文件内容存在,删除
rem md G:\文件内容
#建立文件内容。
xcopy F:\文件内容\*.* /s /e /h /d /c /y G:\文件内容
#复制文件内容。
exit
#退出。
下面这个比较复制,有兴趣也可以看看。
假如f:\公司文件 为备份源文件夹,备份路径为d:\,文件夹名为当天的日期,如d:\2007-07-25,每周5备份一次,3周一个循环,即备份第4周时
,第1周的备份删除,以减少空间。同时在D:\log\里写日志文件,记录复制的文件,文件名为log-日期.txt,如log-2006-04-17.txt 。
1.建立backup.bat,内容如下(不包括说明):
IF EXIST d:\log/log-%date:~0,10%.txt del /F /S /Q d:\log/log-%date:~0,10%.txt
#如果日志文件存在则删除。%date:~0,10%取日期的前10位,我的系统日期格式"date/t"是“2007-07-25 星期三”,所以取得“2007-07-25”
。根据情况需调整。
IF EXIST d:\%date:~0,10% RD /S /Q d:\%date:~0,10%
#如果文件夹存在,删除。
MD d:\%date:~0,10%
#建立文件夹。
xcopy f:\公司文件 d:\%date:~0,10%\ /C /E /H /K /F /R /Y >> d:\log/log-%date:~0,10%.txt & time/T>> d:\log/log-%
date:~0,10%.txt
#复制f:\公司文件 文件夹到d:\%date:~0,10%\,并同时把已复制的文件输出到日志文件,xcopy连目录一起复制。
IF EXIST d:\%date:~0,10% IF EXIST %delDate% RD /S /Q %delDate%
#如果已复制完成,则删除前3周(%delDate%指明,由下面vb取得)的备份。
2。建立backup.vbs,取的前3周的日期内容如下(不包括说明):
dtmYesterday = DateAdd("d",-21,Date) "取前21天,即3周前的日期
strYear = DatePart("yyyy",dtmYesterday)
If DatePart("m",dtmYesterday) < 10 Then
strMonth = 0 & DatePart("m",dtmYesterday)
Else
strMonth = DatePart("m",dtmYesterday)
End If
If DatePart("d",dtmYesterday) < 10 Then
strDay = 0 & DatePart("d",dtmYesterday)
Else
strDay = DatePart("d",dtmYesterday)
End If
delDate = strYear &"-"& strMonth &"-" &strDay
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run("CMD /C set delDate=" & delDate & " & backup.bat") "调用上面写的backup.bat,并传递前3周日期delDate, /C 执
行后关闭cmd窗口,/K则不。
Set WshShell = Nothing
现在可以在cmd窗口里或直接点击backup.vbs执行,则可完成备份。再利用任务计划,则可定时执行你的备份了。
热心网友
时间:2023-07-24 12:52
如果只是复制所有文件与目录,那不必要那么麻烦了,直接copy整个源目录就好了
Dim sdir,ddir
'源目录,From
sdir="c:\t"
'备份目录,To
ddir="c:\c"
comparefile sdir,ddir
Function comparefile(sdir,ddir)
Dim Fso,dFol,dfs,sf1,f1
Set Fso=CreateObject("Scripting.FileSystemObject")
If not(Fso.folderexists(sdir)) then
MsgBox chr(34) &sdir &chr(34) &"文件夹不存在,请确认!",64
Exit Function
End If
If not(Fso.folderexists(ddir)) then
MsgBox chr(34) &ddir &"""文件夹不存在,请确认!",64
Exit Function
End If
If right(sdir,1)<>"\" Then sdir=sdir &"\"
If right(ddir,1)<>"\" Then ddir=ddir &"\"
Set dFol=fso.getfolder(sdir) '获取源目录
dFol.Copy ddir '复制源目录及其所有子目录与文件到指定目标目录下
End Function