标题: [系统相关] 分享一段自己写的自动备份批处理代码顺便求精简 [打印本页]
作者: kingshui 时间: 2016-12-13 23:39 标题: 分享一段自己写的自动备份批处理代码顺便求精简
如题自己写了一个小工具,这里是其中的一段使用shadowscopy进行备份的代码,问下有没精简的方案
注:精简的话主要在针对盘符上,但要考虑映射驱动器的问题.我这个脚本适合在我的工作环境中使用,所有机器都分两个盘,所以没什么麻烦事.当然如果能识别映射驱动器的话就更好.
代码如下:- @echo off & setlocal enabledelayedexpansion
- set sc=c:\temp\shadowsc.txt
- set sd=c:\temp\shadowsd.txt
- set tp=%temp%\tmp.tmp
- (
- if not exist %sc% for /f "tokens=2 delims={}" %%i in ('^(vssadmin list shadows /for^=c:\^|find "Copy ID:"^)^|^|^(vssadmin list shadows /for^=c:\^|find "副本 ID:"^)') do echo.%%i>>%sc%
- for /f %%i in ('find /v /c "" ^<%sc%') do (
- if %%i LEQ 6 goto :nextc
- set /a line=%%i-6
- for /f %%i in (%sc%) do (
- set id=%%i
- set /a a+=1
- vssadmin delete shadows /shadow={!id!} /quiet
- if !a! equ !line! more +!line! %sc%>%tp% && move /y %tp% %sc%>nul & goto :nextc
- )
- )
- :nextc
- for /f "tokens=2 delims={}" %%i in ('wmic shadowcopy call create clientaccessible^,c:\^|find "ShadowID"') do echo.%%i>>%sc%
- if exist d: (
- if not exist %sd% for /f "tokens=2 delims={}" %%i in ('^(vssadmin list shadows /for^=d:\^|find "Copy ID:"^)^|^|^(vssadmin list shadows /for^=d:\^|find "副本 ID:"^)') do echo.%%i>>%sd%
- for /f %%i in ('find /v /c "" ^<%sd%') do (
- if %%i LEQ 6 goto :nextd
- set /a line=%%i-6
- for /f %%i in (%sd%) do (
- set id=%%i
- set /a a+=1
- vssadmin delete shadows /shadow={!id!} /quiet
- if !a! equ !line! more +!line! %sd%>%tp% && move /y %tp% %sd%>nul & goto :nextd
- )
- )
- :nextd
- for /f "tokens=2 delims={}" %%i in ('wmic shadowcopy call create clientaccessible^,d:\^|find "ShadowID"') do echo.%%i>>%sd%
- )
- )>nul
复制代码
此脚本只能在管理员权限下运行,整个完整的脚本我是使用计划任务来进行的.
作者: codegay 时间: 2016-12-14 00:49
参考我写的这个批处理,可以把添加任务计划的操作放到里面,双击运行的时候自动添加到任务计划。
http://bbs.bathome.net/thread-37681-1-1.html
作者: kingshui 时间: 2016-12-14 00:52
本帖最后由 kingshui 于 2016-12-14 00:56 编辑
回复 2# codegay
谢谢你的回复,这个操作我早实现,现在主要目的是想精简代码呢,
我很懒的,直接在服务器run一个定时的批,扫描全网段的机器,只要发现没有这个脚本的自动copy 到目标机器并创建相应的计划任务.所以只要服务器的批在运行,那么有新机器就会执行操作,
而且我这脚本自己用利用fc命令进行本地脚本与服务器脚本的对比,只要服务器更新了,那么本地也会跟着更新了...
作者: Batcher 时间: 2016-12-14 09:46
多写写注释吧,方便别人读懂你的代码,也方便你今后的维护。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |