Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2470491
  • 博文数量: 293
  • 博客积分: 2660
  • 博客等级: 少校
  • 技术积分: 3632
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 17:50
文章分类

全部博文(293)

文章存档

2015年(13)

2014年(58)

2013年(73)

2012年(25)

2011年(30)

2010年(86)

2009年(8)

分类: JavaScript

2010-03-14 10:47:01

操作系统自带的vss快照调度功能不够强大,我自己写了一个脚本,如下。可以定时对某个驱动器做快照,并保留一定的份数。
分两个脚本:snap.bat snap.js
1) rem snap.bat
   rem 调用snap.js,并传入需要做快照的驱动器,如果没有传入则默认为D盘  
   cscript  snap.js
2) //snap.js
   var m = 20;             //保留20份快照
   if(WScript.argument.Count()>0)     //获取需要做快照的驱动器参数
      var Devices = WScript.arguments.Item(0);
   else
      Devices = "D:";
   try{
      var fso = new ActiveXObject("Script.FileSystemObject");
      var a = fso.CreateTextFile("temp.bat",true);
      a.WriteLine("vssadmin list shadows > snaplist.txt");
      var wsh = new ActiveXObject("Wscript.shell");
      a.close();
      wsh.Run("temp.bat",0);
      var k = 0;
      While(!fso,FileExist("snplist.txt")){;}
      While (k<5000000) k++;)                     //确保snaplist.txt已经生成了
      var a =  fso.OpenTextFile("snaplist.txt",1);
      var arr = a.ReadAll().split("\r\n");
      var j = 0;
      for(var i = 0; i < arr.length;i++){
         if(arr[i].indexOf("卷影副本集")>=0)
             j++;
         }
      a.close();
      if(j>=m){                      \\如果超过最大份数就删除最旧的一份快照
         a = fso.CreateTextFile("temp.bat",true);
         a.WriteLine("vssadmin delete shadows /For " + Devices + " /oldest /Quiet");
      a.close();
      wsh.Run("temp.bat",0);   
      }
      While (k<10000000) k++;)       
      a = fso.CreateTextFile("temp.bat",true);
      a.WriteLine(""vssadmin create shadows /For=" + Devices);
      a.close();
      wsh.Run("temp.bat",0);
   }
   Catch(e){
     WScript.echo(e.description)
   }             
阅读(1041) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~