迅雷的批量下载满好用。但是有两点我不太中意。在这个脚本里会有所增强
1、不能设置保存的文件名。
2、不能单独设置这批下载的线程限制。
// 下载从编号001到编号020的图片,保存名为猫咪写真*.jpg 使用6个线程
jdlp {*}.jpg d:草原上的可爱猫咪 猫咪写真{*}.jpg 20 1 3 6
var rslt = [];
var urlPattern = arguments[0].replaceAll("(http|https)://", "");
var targetDir = arguments[1] || "d:\";
var filenamePattern = arguments[2] || "图片";
var endIndx = arguments[3];
var startIndx = arguments[4];
var numlen = arguments[5];
var threadnum = arguments[6];
var service = wFixedThreadPool(threadnum);
mkdir(targetDir);
function downloadTask(indx) {
var url = "" + place("{*}", String());
var file = targetDir + place("{*}", String());
return function() {
// 生成一个url 生成目标文件
try {
println("downloading : " + url);
cp(url, file);
println("downloaded : " + url);
} catch(e) {
println("download error : " + url);
println("reasion :" + e);
}
}
}
function fillStr(str, c) {
var sb = new java.lang.String());
var len = sb.length();
if (len > numlen) {
String().substring(0, len);
} else {
for (var cnt = 1; cnt <= (numlen - len); cnt++)
sb.insert(0, c);
String();
}
}
function checkAllDone() {
for each(var futur in rslt) {
if (future.isDone() == false) return false;
}
return true;
}
for (var i = startIndx; i <= endIndx; i++) {
var indx = fillStr(i, '0');
var future = service.submit(new java.lang.Thread(downloadTask(indx)));
rslt.push(future);
}
service.shutdown();
// 等待结束
while (checkAllDone() == false) {
java.lang.Thread.sleep(1000);
}
println("~~~~over~~~");
转载于:.html
本文发布于:2024-02-01 11:07:41,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170675686136178.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |