JS 操作文件案例,遍历文件,并随机抽取

这个JavaScript代码示例展示了如何遍历指定文件夹中的图片,然后随机抽取一定数量的图片进行移动或复制操作。用户可以设置抽取的图片数量和操作类型(移动或复制)。遍历和抽取的图片路径在代码中定义。

<html>
<head>Sam遍历文件夹,随机抽取</head>
<script language="javascript">

//要遍历的图片地址,注意地址要用\\
var picPath="C:\\Users\\Administrator.USER-20160321ID\\Desktop\\随机取图片\\测试图片\\";

//移动抽取到的图片要保存的地方
var eFolder='C:\\Users\\Administrator.USER-20160321ID\\Desktop\\随机取图片\\get\\';

//要随机取的图片数量,数量不可大于遍历的文件数量
var getPicCount=5;

//mType为1 移动,type为0 复制
var mType=0;

//----------注意!!!非技术人员,以下请不要更改!!!本程序Sam原创
var s = "";
var result = [];
function FileInfo(path, name,time) {
  this.path = path;
  this.name = name;
  this.time = time;
}
function showFolderFileList(folderspec)
{
   var fso,f,fc,name;
   var url,str,file,filename;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
   fc = new Enumerator( f.files );
   for (; !fc.atEnd(); fc.moveNext( ) ) {
      filename = fso.GetFileName( fc.item( ) );
      var file = fso.getFile(folderspec + "\\" + filename);
      var fileInfo = new FileInfo(folderspec, filename,file.DateLastModified);
      result.push(fileInfo);
   }
   var Collection = new Enumerator(f.SubFolders);  
  
       for (Collection.moveFirst(); !Collection.atEnd(); Collection.moveNext()) {  
        var Obj = Collection.item();  
        showFolderFileList(Obj.Path);
    }  
   return result;
}
function display_result(result)
{
   var body = document.getElementById("mtbody");
   var size = result.length;
   var tr = document.getElementById("mtr");
   for( var i =0; i < size; i++ ) {
      var newTr = tr.cloneNode(true);
      var children = newTr.children;
      for( var j = 0 ; j < children.length; j++) {
        var item = children.item(j);
        switch(j) {
          case 0:
            item.innerHTML = result[i].path;
            break;
          case 1:
            item.innerHTML = '<a href="'+result[i].path+'\\'+result[i].name+'" target="_blank">'+result[i].name+'</a>';
            break;
          //case 2:
            //item.innerHTML = result[i].time;
        }
      }
      body.appendChild(newTr);
    }
}

//随机取数函数
function getRandomArrayElements(arr, count) {
    var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
    while (i-- > min) {
        index = Math.floor((i + 1) * Math.random());
        temp = shuffled[index];
        shuffled[index] = shuffled[i];
        shuffled[i] = temp;
    }
    return shuffled.slice(min);
}

function run() {
  var list_result = showFolderFileList(picPath);//开始遍历目录
  display_result(list_result);//显示所有文件
  document.getElementById("picCounts").innerHTML=list_result.length;


//-----------------
//要移动的源文件夹
var sFolder=picPath;
var fso = new ActiveXObject("Scripting.FileSystemObject"); 

function MovePic(ff,type){
    var tmpArr=new Array();
    var tempff=ff.replace(sFolder,'');
    var folderName='',arrLast='',f1;
    //document.write(tempff+'<br>');
    tmpArr=tempff.split("\\");
    arrLast=tmpArr.pop();//文件
    for(var i in tmpArr){
        //document.write(tmpArr[i]+'<br>');
        //循环并建立文件夹
        folderName = folderName+(tmpArr[i]+"\\");
        if (fso.FolderExists(eFolder+folderName)){
                  //document.write(tmpArr[i]+'存在<br>');
        }else{
            fso.CreateFolder (eFolder+folderName);//创建文件夹
            //document.write(tmpArr[i]+'已创建<br>');    
        }
    }
    f1 = fso.GetFile(ff);
    if(type){
        f1.Move(eFolder+folderName+arrLast);//移动
    }else{
        f1.Copy(eFolder+folderName+arrLast);//复制    
    }
    //document.write(eFolder+folderName+arrLast);
}

//-------------

//随机显示指定数量的文件

var tempArr=getRandomArrayElements(list_result, getPicCount);
var itemstr='';
for( var i =0; i < tempArr.length; i++ ) {
 //itemstr=itemstr+'<a href="'+result[i].path+'\\'+result[i].name+'" target="_blank">'+tempArr[i].path+'\\'+tempArr[i].name+'</a>';
 itemstr=itemstr+'<a href="#">'+tempArr[i].path+'\\'+tempArr[i].name+'</a>';
 //复制或移动
 MovePic(tempArr[i].path+'\\'+tempArr[i].name,mType);
 
}
document.getElementById("suijistr").innerHTML=itemstr;
document.getElementById("getpicnum").innerHTML=getPicCount;
}

</script>
<style>
#mtable td{heidth:20px; line-height:20px;}
#picCounts {color:red;}
#suijistr a{ display:block; height:21px; line-height:21px;}
</style>
</head>
<body onload = "run()">
<a href="#gettop" style="color:red">点击查看随机取出的图片</a><br /><br />
<div sytle="height:30px; background:#EEE;">统计:共遍历到 <strong id="picCounts">0</strong> 张图片文件</div>
  <div id ="table">
      <table id="mtable" style="font-size:12px;background:#AAA; padding:1px">
    <tbody id="mtbody">
      <tr id="mtr" style="background:#FFF;">
        <td><strong>文件路径</strong></td>
        <td><strong>文件名(点击可查看图片)</strong></td>
        <!-- <td>最后修改时间</td> -->
      </tr>
    </tbody>
  </table>
  </div>


<br />
<div id="gettop" name="gettop">共随机取出<strong><span id="getpicnum" style='color:red;'> 0 </span></strong>张图片</div><br />
<div id="suijistr">

</div>


</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值