超星图书虽然文字质量不高,但是比较新,比较全,所以还是值得一看的。
但是,超星图书的每一页,都是一个独立的文件,很小,远远小于现在的硬盘簇大小,造成极大的空间浪费,同时,在拷贝移动文件时,由于要处理大量文件,拷贝或移动的速度也极慢。
比较好的方法,是把每本超星图书的全部页面文件压缩成一个文件,阅读时再解开,这样可以大大减少硬盘空间浪费,拷贝时速度也指数提高。
不过,如果有大量超星图书,要对每本书,在目录上按右按,然后选择压缩,效率太低。因此,我在这里用Windows Script脚本语言编写了一个脚本,能够自动把指定目录下的每个图书目录自动压缩成单独的压缩文件。
如果是在命令行窗口下执行,可以用
cscript compress.js 要压缩的目录
这样,可以输出工作的进度信息,如果直接点击compress.js,会弹出提示窗口,影响使用。
同时,需要在路径PATH环境参数里设置压缩使用的压缩软件的目录,我使用二种压缩软件,一种是PKZIP25,是32位的命令行下ZIP压缩程序,还用WINRAR的命令行版本,RAR.exe,对应这二个压缩程序的脚本如下:
使用PKZIP25.exe的Compress.js
var fs=new ActiveXObject("Scripting.FileSystemObject");
var s=WScript.CreateObject("WScript.Shell");
var arg=WScript.Arguments;
//取得要处理的目录
if(arg.Count())
{
var f=fs.GetFolder(arg.item(0));
}
else
{
var f=fs.GetFolder(".")};
}
//取得指定目录下所有目录的集合
var fc=new Enumerator(f.SubFolders);
for(;!fc.atEnd();fc.moveNext())
{
var ff=fs.GetFolder(fc.item());
var fname=ff.Name;
WScript.Echo("正在压缩 "+'"'+fname+'"');
s.Run("pkzip25.exe -add -directories -move -recurse /""+fname+"/" /""+fc.item()+"/",7,true);
WScript.Echo('"'+fname+'"'+"压缩完");
}
}
注释:pkzip25的压缩命令行参数是
-add加入文件到压缩文档
-move压缩后删除源文件
-directories保存目录结构,使用相对路径
-recurse递归处理子目录
使用rar.exe的compress.js
var fs=new ActiveXObject("Scripting.FileSystemObject");
var s=WScript.CreateObject("WScript.Shell");
var arg=WScript.Arguments;
//取得要处理的目录
if(arg.Count())
{
var f=fs.GetFolder(arg.item(0));
}
else
{
var f=fs.GetFolder(".")};
}
//取得指定目录下所有目录的集合
var fc=new Enumerator(f.SubFolders);
for(;!fc.atEnd();fc.moveNext())
{
var ff=fs.GetFolder(fc.item());
var fname=ff.Name;
WScript.Echo("正在压缩 "+'"'+fname+'"');
s.Run("rar m -r /""+fname+"/" /""+fc.item()+"/",7,true);
WScript.Echo('"'+fname+'"'+"压缩完");
}
}
注释:rar的压缩命令行参数是
m 移动文件到压缩档案
-保存目录结构,使用相对路径,并递归处理子目录
注意:
1、一定要用cscript.exe在命令行下执行,否则会不断弹出提示窗口
2、在PATH环境变量里设置好rar和pkzip25的路径