winrar实现自动备份攻略(二)--自动化生成备份列表及忽略列表
来源:互联网 发布:平面广告知乎 编辑:程序博客网 时间:2024/05/12 02:36
在上一篇中,我们知道了用winrar进行自动备份需要的几个步骤。如制作“备份文件列表”和“忽略文件列表”,构造命令行参数。如果面对一个比较大的工程,特别是有多个解决方案,每个解决方案又有多个项目时,需要备份的目录和文件很多,而且需要忽略的目录和文件也很多。如果手动的制作“备份文件列表”和“忽略文件列表”,就会非常的繁琐。下面我推荐给大家两个自制的脚本文件("初始化备份列表.js"和"执行备份.js"),一个用于自动生成“备份文件列表”和“忽略文件列表”,另一个用于构造winrar命令行参数,启动winrar的备份进程。
1、假设需要备份mail目录,mail目录的绝对路径为:e:/pimshell/mail。
将"初始化备份列表.js"和"执行备份.js"两个脚本文件放入mail目录。
2、双击执行"初始化备份列表.js",自动生成“备份文件列表”和“忽略文件列表”,并放入mail目录。
3、双击执行"执行备份.js",自动构造winrar命令行参数,启动winrar的备份进程。
4、如果需要,你还可以直接将"执行备份.js"的快捷方式放到桌面上。
脚本文件源码下载:
"初始化备份列表.js" http://download1.csdn.net/down3/20070601/01003843528.js
"执行备份.js" http://download1.csdn.net/down3/20070601/01004005378.js
源码抄录如下,若有更新版本请从上面下载:
"初始化备份列表.js"
/**//* 初始化备份列表.js
////作者: pimshell
////博客: http://blog.csdn.net/pimshell
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////当前版本: Version 1.0 - 05/31/2007
////说明:
1、自动收集当前目录下的所有目录和文件,
将需要备份的放入“list_append.txt”,不需要备份的放入“list_ignore.txt”。
"list_append.txt"包含要备份的文件(目录)列表
"list_ignore.txt"包含要忽略的文件(目录)列表
2、进行匹配的“正则表达式”,默认的支持VC++项目的备份。
3、对于其他项目,可根据需要自行修改“正则表达式”(reFile/rePath)。
4、也可以直接修改已生成的"list_append.txt"和"list_ignore.txt"。
5、当前的“正则表达式”指示不备份以下目录和文件:
所有名含有"debug/release"的目录,
所有后缀名为".rar/.zip/.ncb/.pdb/.ilk"的文件。
////期望:
为了更好的完善代码,如有好的建议请上博客回复,
也可以随时从“更新地址”下载最新的版本。
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////版本修改历史:
1.0: - 初始版本
*/
var WshShell = new ActiveXObject("WScript.Shell");
//当前目录
var oCurrentDirectory=WshShell.CurrentDirectory;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folder = fso.GetFolder(oCurrentDirectory);
//准备两个文件
var oListAppend=fso.CreateTextFile(oCurrentDirectory+"/list_append.txt",true,true);
var oListIgnore=fso.CreateTextFile(oCurrentDirectory+"/list_ignore.txt",true,true);
//关于“忽略”的正则表达式
var reFile = /(.rar$)|(.zip$)|(.ncb$)|(.pdb$)|(.ilk$)/i;
var rePath = /debug|release/i;
//检索目录
_LookupFolder("",folder,true);
//close
oListAppend.close();
oListIgnore.close();
//ok
WshShell.Popup("初始化完毕!",0,"http://blog.csdn.net/pimshell",0);
/////////////////////////////////////////////////////////
function _LookupFolder(oRelativePath,oFolder,bAppend)
...{
if(oFolder)
...{
//files
var oFiles=new Enumerator(oFolder.files);
for(;!oFiles.atEnd();oFiles.moveNext())
...{
var oName=oRelativePath+oFiles.item().name;
//
if(_checkFileName(oName))
...{
oListIgnore.WriteLine(oName);
}
else
...{
//因为父目录已加入,所以文件不必加入。
if(bAppend)
oListAppend.WriteLine(oName);
}
}
//subfolders
var oSubFolders=new Enumerator(oFolder.subFolders);
for(;!oSubFolders.atEnd();oSubFolders.moveNext())
...{
var oSubFolder=oSubFolders.item();
var oName=oRelativePath+oSubFolder.name;
//
if(_checkPathName(oName))
...{
oListIgnore.WriteLine(oName);
}
else
...{
//因为父目录已加入,所以子目录不必加入。
if(bAppend)
oListAppend.WriteLine(oName);
//检测子目录
_LookupFolder(oName+"/",oSubFolder,false);
}
}
}
}
function _checkFileName(oName)
...{
return reFile.test(oName);
}
function _checkPathName(oName)
...{
return rePath.test(oName);
}
////作者: pimshell
////博客: http://blog.csdn.net/pimshell
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////当前版本: Version 1.0 - 05/31/2007
////说明:
1、自动收集当前目录下的所有目录和文件,
将需要备份的放入“list_append.txt”,不需要备份的放入“list_ignore.txt”。
"list_append.txt"包含要备份的文件(目录)列表
"list_ignore.txt"包含要忽略的文件(目录)列表
2、进行匹配的“正则表达式”,默认的支持VC++项目的备份。
3、对于其他项目,可根据需要自行修改“正则表达式”(reFile/rePath)。
4、也可以直接修改已生成的"list_append.txt"和"list_ignore.txt"。
5、当前的“正则表达式”指示不备份以下目录和文件:
所有名含有"debug/release"的目录,
所有后缀名为".rar/.zip/.ncb/.pdb/.ilk"的文件。
////期望:
为了更好的完善代码,如有好的建议请上博客回复,
也可以随时从“更新地址”下载最新的版本。
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////版本修改历史:
1.0: - 初始版本
*/
var WshShell = new ActiveXObject("WScript.Shell");
//当前目录
var oCurrentDirectory=WshShell.CurrentDirectory;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folder = fso.GetFolder(oCurrentDirectory);
//准备两个文件
var oListAppend=fso.CreateTextFile(oCurrentDirectory+"/list_append.txt",true,true);
var oListIgnore=fso.CreateTextFile(oCurrentDirectory+"/list_ignore.txt",true,true);
//关于“忽略”的正则表达式
var reFile = /(.rar$)|(.zip$)|(.ncb$)|(.pdb$)|(.ilk$)/i;
var rePath = /debug|release/i;
//检索目录
_LookupFolder("",folder,true);
//close
oListAppend.close();
oListIgnore.close();
//ok
WshShell.Popup("初始化完毕!",0,"http://blog.csdn.net/pimshell",0);
/////////////////////////////////////////////////////////
function _LookupFolder(oRelativePath,oFolder,bAppend)
...{
if(oFolder)
...{
//files
var oFiles=new Enumerator(oFolder.files);
for(;!oFiles.atEnd();oFiles.moveNext())
...{
var oName=oRelativePath+oFiles.item().name;
//
if(_checkFileName(oName))
...{
oListIgnore.WriteLine(oName);
}
else
...{
//因为父目录已加入,所以文件不必加入。
if(bAppend)
oListAppend.WriteLine(oName);
}
}
//subfolders
var oSubFolders=new Enumerator(oFolder.subFolders);
for(;!oSubFolders.atEnd();oSubFolders.moveNext())
...{
var oSubFolder=oSubFolders.item();
var oName=oRelativePath+oSubFolder.name;
//
if(_checkPathName(oName))
...{
oListIgnore.WriteLine(oName);
}
else
...{
//因为父目录已加入,所以子目录不必加入。
if(bAppend)
oListAppend.WriteLine(oName);
//检测子目录
_LookupFolder(oName+"/",oSubFolder,false);
}
}
}
}
function _checkFileName(oName)
...{
return reFile.test(oName);
}
function _checkPathName(oName)
...{
return rePath.test(oName);
}
"执行备份.js"
/**//* 执行备份.js
////作者: pimshell
////博客: http://blog.csdn.net/pimshell
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////当前版本: Version 1.0 - 05/31/2007
////说明:
1、自动执行winrar.exe程序
2、"list_append.txt"包含要备份的文件(目录)列表
3、"list_ignore.txt"包含要忽略的文件(目录)列表
4、默认采用的是更新备份的方式。
5、可针对不同的实际应用自行修改命令行的开关值(oSwitch)。
////期望:
为了更好的完善代码,如有好的建议请上博客回复,
也可以随时从“更新地址”下载最新的版本。
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////版本修改历史:
1.0: - 初始版本
*/
var WshShell = new ActiveXObject("WScript.Shell");
//取得加入列表文件的完整路径
var oListAppendPath=_getListAppendPath();
//取得忽略列表文件的完整路径
var oListIgnorePath=_getListIgnorePath();
//检测列表文件是否已初始化
if(!_checkFileExist(oListAppendPath,oListIgnorePath))
...{
WshShell.Popup("请先执行“初始化备份列表.js”!",0,"http://blog.csdn.net/pimshell",0);
}
else
...{
//取得winrar.exe的完整路径
var oRarPath=WshShell.RegRead("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/WinRAR.exe/");
//取得目标文件名
var oRarTarget=_getTargetPath();
//指令/开关
var oAction=" a ";
var oSwitch=" -u -r ";
//组合命令行参数
var oCommand="""+oRarPath+""" + oAction + oSwitch + """+oRarTarget+""" + " @" + oListAppendPath;
oCommand+=" -x@" + oListIgnorePath;
//提示
if(6==WshShell.Popup("如果现在开始备份,请点击“是”!",0,"http://blog.csdn.net/pimshell",4))
...{
//执行
var oExec = WshShell.Exec(oCommand);
}
}
////////////////////////////////////////////////////////
function _checkFileExist(oListAppendPath,oListIgnorePath)
...{
try
...{
//
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.GetFile(oListAppendPath);
fso.GetFile(oListIgnorePath);
}
catch(e)
...{
return false;
}
return true;
}
function _getListAppendPath()
...{
var oCurrentDirectory=WshShell.CurrentDirectory;
return oCurrentDirectory + "/list_append.txt";
}
function _getListIgnorePath()
...{
var oCurrentDirectory=WshShell.CurrentDirectory;
return oCurrentDirectory + "/list_ignore.txt";
}
function _getTargetPath()
...{
var oCurrentDirectory=WshShell.CurrentDirectory;
var n=oCurrentDirectory.lastIndexOf("/");
return oCurrentDirectory + oCurrentDirectory.substr(n) + ".rar";
}
////作者: pimshell
////博客: http://blog.csdn.net/pimshell
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////当前版本: Version 1.0 - 05/31/2007
////说明:
1、自动执行winrar.exe程序
2、"list_append.txt"包含要备份的文件(目录)列表
3、"list_ignore.txt"包含要忽略的文件(目录)列表
4、默认采用的是更新备份的方式。
5、可针对不同的实际应用自行修改命令行的开关值(oSwitch)。
////期望:
为了更好的完善代码,如有好的建议请上博客回复,
也可以随时从“更新地址”下载最新的版本。
////更新地址:http://blog.csdn.net/pimshell/archive/2007/06/01/1633610.aspx
////版本修改历史:
1.0: - 初始版本
*/
var WshShell = new ActiveXObject("WScript.Shell");
//取得加入列表文件的完整路径
var oListAppendPath=_getListAppendPath();
//取得忽略列表文件的完整路径
var oListIgnorePath=_getListIgnorePath();
//检测列表文件是否已初始化
if(!_checkFileExist(oListAppendPath,oListIgnorePath))
...{
WshShell.Popup("请先执行“初始化备份列表.js”!",0,"http://blog.csdn.net/pimshell",0);
}
else
...{
//取得winrar.exe的完整路径
var oRarPath=WshShell.RegRead("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths/WinRAR.exe/");
//取得目标文件名
var oRarTarget=_getTargetPath();
//指令/开关
var oAction=" a ";
var oSwitch=" -u -r ";
//组合命令行参数
var oCommand="""+oRarPath+""" + oAction + oSwitch + """+oRarTarget+""" + " @" + oListAppendPath;
oCommand+=" -x@" + oListIgnorePath;
//提示
if(6==WshShell.Popup("如果现在开始备份,请点击“是”!",0,"http://blog.csdn.net/pimshell",4))
...{
//执行
var oExec = WshShell.Exec(oCommand);
}
}
////////////////////////////////////////////////////////
function _checkFileExist(oListAppendPath,oListIgnorePath)
...{
try
...{
//
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.GetFile(oListAppendPath);
fso.GetFile(oListIgnorePath);
}
catch(e)
...{
return false;
}
return true;
}
function _getListAppendPath()
...{
var oCurrentDirectory=WshShell.CurrentDirectory;
return oCurrentDirectory + "/list_append.txt";
}
function _getListIgnorePath()
...{
var oCurrentDirectory=WshShell.CurrentDirectory;
return oCurrentDirectory + "/list_ignore.txt";
}
function _getTargetPath()
...{
var oCurrentDirectory=WshShell.CurrentDirectory;
var n=oCurrentDirectory.lastIndexOf("/");
return oCurrentDirectory + oCurrentDirectory.substr(n) + ".rar";
}
- winrar实现自动备份攻略(二)--自动化生成备份列表及忽略列表
- WINRAR实现自动备份
- winrar实现自动备份攻略(一)--备份VC++项目的一个样例
- WinRAR实现自动打包备份的功能
- winrar+计划任务实现文件自动备份
- winrar的自动备份
- Winrar自动压缩备份作业
- 利用winrar实现自动打包备份的功能!
- 使用winrar与FTP结合,实现异地自动备份
- 利用winrar自动备份重要资料
- 利用winrar自动备份重要资料
- 利用winrar自动备份重要资料
- mysql自动生成备份
- Oracle rman 备份错误列表
- 备份我的文件列表
- windows 下利用 winrar 和 计划任务实现文件的自动备份
- mysql自动化备份及恢复
- 目录列表自动生成
- 发点牢骚,无奈的愤怒--别把老子当万金油使
- 六一儿童节 我们都是小孩 我们总会长大
- winrar实现自动备份攻略(一)--备份VC++项目的一个样例
- 糟糕,好像对什么都没兴趣了
- PHP on Windows
- winrar实现自动备份攻略(二)--自动化生成备份列表及忽略列表
- java 生成pdf文件,添加图片
- 嵌入式核心书籍
- 一个Javascript 图片滚动类
- Linux下缓冲区溢出攻击的原理及对策
- Programming Windows程式开发设计指南->第二章 例子程序
- Programming Windows程式开发设计指南->第一章 开始
- 插入排序, 合并排序, 快速排序C++源代码
- Programming Windows程式开发设计指南->第二章 Unicode简介