天天看點

js操作用戶端:把某一個檔案夾下面的所有的檔案copy到目标檔案夾

map.js如下:

//實作map

function Map() {

var struct = function(key, value) {

 this.key = key;

 this.value = value;

}

var put = function(key, value){

 for (var i = 0; i < this.arr.length; i++) {

  if ( this.arr[i].key === key ) {

this.arr[i].value = value;

return;

  }

 }

this.arr[this.arr.length] = new struct(key, value);

}

var get = function(key) {

 for (var i = 0; i < this.arr.length; i++) {

  if ( this.arr[i].key === key ) {

return this.arr[i].value;

  }

 }

 return null;

}

var remove = function(key) {

var v;

for (var i = 0; i < this.arr.length; i++) {

  v = this.arr.pop();

  if ( v.key === key ) {

continue;

  }

  this.arr.unshift(v);

}

}

var size = function() {

 return this.arr.length;

}

var isEmpty = function() {

 return this.arr.length <= 0;

}

this.arr = new Array();

this.get = get;

this.put = put;

this.remove = remove;

this.size = size;

this.isEmpty = isEmpty;

}

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%

    String path = request.getContextPath(); 

%>    

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<script type='text/javascript' src='<%=path%>/js/jquery.js'></script>

<script type='text/javascript' src='<%=path%>/js/map.js'></script>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<link rel="stylesheet" type="text/css" href="<%=path%>/styles/default.css" target="_blank" rel="external nofollow" />

<link rel="stylesheet" type="text/css" href="<%=path%>/styles/common.css" target="_blank" rel="external nofollow" />

<title>發票彙總</title>

</head>

<body>

<input type="checkbox" id="selectall" name="selectall">

<input type="checkbox" name="type" value="xls">xls

<input type="checkbox" name="type" value="xlsx">xlsx

<input type="checkbox" name="type" value="pdf">pdf

<input type="checkbox" name="type" value="xml">xml

<br/><br/>

<td>

<input type="text" name="startpath" id="startpath" readOnly/>

</td>

<td>

<input type="button"  class="btn4" οnclick="browseFolder('startpath')" value="開始路徑" />

</td>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   ---->   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<td>

<input type="text" name="stoppath" id="stoppath" readOnly/>

</td>

<td>

<input type="button" οnclick="browseFolder('stoppath')"  class="btn4" value="目标路徑" />

</td>

<input type="button" value ="複制到"  class="btn4" οnclick="copys()">

<hr/>

<div class="searchresult">

注:

如果點選選擇按鈕提示:你沒有權限,應該如下修改:<br />

    1. 單擊菜單工具->Internet選項->安全->受信任站點->站點->把此網站設為可信站點<br />

    2. 在自定義級别->對沒有标記為安全的ActiveX控件進行初始化和腳本運作"----"啟用"

</div>

</body>

</html>

<script>

var map = new Map();

var fso = new ActiveXObject("Scripting.FileSystemObject");

var xlsCount = 0;

var xlsxCount = 0;

var pdfCount = 0;

var xmlCount = 0;

var messages = ""; // 最後的提示資訊

var startpath = "";

var stoppath = "";

function getFileName(fileNameTemp,exName){

var fileName = fileNameTemp+ "."+exName; //檔案名+字尾

if(map.get(fileName) == null){

map.put(fileName,fileName);

return fileName;

}else{

fileNameTemp = fileNameTemp+"1";

return getFileName(fileNameTemp,exName); //遞歸調用自己傳回不重複的檔案名

}

}

function displayFiles(folderName) {

try{

var f = fso.GetFolder(folderName); 

if(f){

// 周遊目錄   

   var fk = new Enumerator(f.SubFolders);

   for (; !fk.atEnd(); fk.moveNext()) {

       f = fso.GetFolder(fk.item());

       fc = new Enumerator(f.files);

   for (; !fc.atEnd(); fc.moveNext()) {

    var itemTemp = fc.item();

    var fileNameTemp = fso.GetBaseName(itemTemp); // 檔案名

    var exName = fso.GetExtensionName(itemTemp); // 檔案字尾

    if(JudgeType(exName)){

    var fileName = getFileName(fileNameTemp,exName); //檔案名+字尾

        fso.CopyFile(itemTemp, stoppath+"\\"+fileName,false);

        if(exName=="xls"){

    xlsCount++;

    }

    if(exName=="xlsx"){

    xlsxCount++;

    }

    if(exName=="pdf"){

    pdfCount++;

    }

    if(exName=="xml"){

    xmlCount++;

    }

       }

        //alert("fc.item()="+fc.item()+";fileName="+fileName);

   }

   displayFiles(fk.item()); // 遞歸調用自己,循環子目錄

   }

}

}catch(e){

alert(messages+"  "+e);

}

}

function copys(){

startpath = $("#startpath").val();

stoppath = $("#stoppath").val();

xlsCount = 0;

xlsxCount = 0;

pdfCount = 0;

xmlCount = 0;

messages = ""; // 最後的提示資訊

var tempChecked = false;

$("input[name='type']:checked").each(function(i,ch){

tempChecked = true;

});

if(!tempChecked){

alert("請選擇一個檔案類型!");

return;

}

if($.trim(startpath) == ""){

alert("請選擇開始檔案夾");

return ;

}

if($.trim(stoppath) == ""){

alert("請選擇目标檔案夾");

return ;

}

try{

//-----讀目标檔案夾裡面的檔案,放到map裡面,防止覆寫以前的檔案-------------------------------------------------

var fstop = fso.GetFolder(stoppath);

fc = new Enumerator(fstop.files);

   for (; !fc.atEnd(); fc.moveNext()) {

    var itemTemp = fc.item();

    var fileNameTemp = fso.GetBaseName(itemTemp); // 檔案名

    var exName = fso.GetExtensionName(itemTemp); // 檔案字尾

    var tempFileNameAll = fileNameTemp+"."+exName;

    map.put(tempFileNameAll,tempFileNameAll);

   }

   // 周遊目錄    無需周遊目錄,隻需要控制目前檔案夾沒有檔案名重複即可

//-----讀目标檔案裡面的檔案,放到map裡面,防止覆寫以前的檔案-----完--------------------------------------------

var f = fso.GetFolder(startpath);

fc = new Enumerator(f.files);

   for (; !fc.atEnd(); fc.moveNext()) {

    var itemTemp = fc.item();

    var fileNameTemp = fso.GetBaseName(itemTemp); // 檔案名

    var exName = fso.GetExtensionName(itemTemp); // 檔案字尾

    if(JudgeType(exName)){

    var fileName = getFileName(fileNameTemp,exName);

    fso.CopyFile(itemTemp, stoppath+"\\"+fileName,false);

    if(exName=="xls"){

    xlsCount++;

    }

    if(exName=="xlsx"){

    xlsxCount++;

    }

    if(exName=="pdf"){

    pdfCount++;

    }

    if(exName=="xml"){

    xmlCount++;

    }

    }

       //alert("fc.item()="+fc.item()+";fileName="+fileName);

   }

   displayFiles(startpath);// 遞歸周遊下面所有子目錄和copy子目錄下的檔案

   $("input[name='type']:checked").each(function(k,ch){

    var chValue = ch.value;

    if(chValue == "xls"){

    messages += "xls檔案複制了:"+xlsCount+"個;";

    }

    if(chValue == "xlsx"){

    messages += "xlsx檔案複制了:"+xlsxCount+"個;";

    }

    if(chValue == "pdf"){

    messages += "pdf檔案複制了:"+pdfCount+"個;";

    }

    if(chValue == "xml"){

    messages += "xml檔案複制了:"+xmlCount+"個;";

    }

   });

   if(messages != ""){

    alert(messages);

   }else{

    alert("沒有檔案!");

   }

   map = new Map();

    }catch(e){

alert(messages+"  "+e);

}

}

function JudgeType(valueTemp){

var result = false;

var temp = $("input[name='type'][value='"+valueTemp+"']:checked").val();

if(temp != "" && typeof(temp) != "undefined"){

result = true;

}

return result;

}

function browseFolder(path) {

    try {

        var Message = "\u8bf7\u9009\u62e9\u6587\u4ef6\u5939"; //選擇框提示資訊

        var Shell = new ActiveXObject("Shell.Application");

        var Folder = Shell.BrowseForFolder(0, Message, 64, 17); //起始目錄為:我的電腦

        //var Folder = Shell.BrowseForFolder(0, Message, 0); //起始目錄為:桌面

        if (Folder != null) {

            Folder = Folder.items(); // 傳回 FolderItems 對象

            Folder = Folder.item(); // 傳回 Folderitem 對象

            Folder = Folder.Path; // 傳回路徑

            if (Folder.charAt(Folder.length - 1) != "\\") {

                //Folder = Folder + "\\\\";

            }

            document.getElementById(path).value = Folder;

            return Folder;

        }

    }

    catch (e) {

        alert(e.message);

    }

}

$(document).ready(function(){

$("#selectall").click(selectAll); 

}); 

function selectAll() {

var checked = $("#selectall").attr("checked"); 

$("input[name='type']").each(function() { 

var subchecked = $(this).attr("checked"); 

if (subchecked != checked) 

$(this).click(); 

}); 

}

</script>

</script>

js操作用戶端:把某一個檔案夾下面的所有的檔案copy到目标檔案夾