好久没更新了……辞职在家快一个月了,不过因为想改行了,得看些相关书籍,程序方面只得暂放一下了,不过程序总归是我的一大爱好,放弃是不会的,可惜了新买的RUBY和敏捷开发了![](https://www.cnblogs.com/Emoticons/others/think001.gif)
前几天老婆问我,能不能实现把几个文件一拖就自动用WINRRAR加密,还是加密的?想了想,应该是可以的,虽然我觉得直接用右键更方便。
代码如下,注意开头的 <?xml version="1.0" encoding="gb2312"?>,是代码的保存格式,写什么就要保存为什么编码。本来想再加个选择保存路径的功能,不过上次写别的时候,发现有些人电脑上居然是没有的,还有就是我想偷懒……就直接保存在当前目录了。
使用很简单,把下面的代码复制到记事本,然后另存为”你喜欢的名字.wsh”,然后把要压缩的文件选择,拖到这个WSH文件上面,就OK了
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
<?xml version="1.0" encoding="gb2312"?>
<package>
<job id="import_function">
<script language="vbscript">
<![CDATA[
Function InputDlg(text,title,dft)
result = InputBox(text,title,dft)
InputDlg = result
End Function
]]>
</script>
<script language="javascript">
<![CDATA[
var shell = new ActiveXObject("WScript.Shell");
function alert(msg)
{
WScript.Echo(msg);
}
function createCmd(psw,list)
{
var rarPath = getRar();
if(!rarPath)
{
alert("你没有正确安装WinRAR,脚本退出!");
return false;
}
//偷懒了,没用路径类来解析……
var path = list(0).split("\\");
path.splice(path.length-1,1,"压缩.rar")
path = path.join("\\");
var cmd = rarPath + " a -p"+psw + ' "'+path+'" ';
for(var i=0;i<list.length;i++)
cmd = cmd + '"'+list(i)+'" ';
return cmd;
}
function getRar()
{
var rar = shell.RegRead('HKEY_CLASSES_ROOT\\.rar\\ShellNew\\FileName');//不知道怎么去检测WINRAR的路径,直接用注册表中文件关联来找了
if(rar.length==0)
{
return false;
}
var path = rar.split("\\");
path.splice(path.length-1,1,"rar")
path = path.join("\\");
return path;
}
function run()
{
if(WScript.Arguments.length==0)
{
alert("没有选择文件,脚本退出!");
return;
}
var psw = InputDlg("输入你要的密码","输入密码","000000");
if(psw.replace(/^\s+|\s+$/,'').length==0)
{
alert("没有输入密码,脚本退出");
return;
}
var cmd = createCmd(psw,WScript.Arguments);
if(cmd)
{
try{
shell.Run(cmd);
}catch(error){
alert("压缩失败!");
}
}
}
run();
]]>
</script>
</job>
</package>
![](http://img.users.51.la/3537687.asp)