zoukankan      html  css  js  c++  java
  • (转)js操作客户端:把某一个文件夹下面的所有的文件copy到目标文件夹

    (转自)http://blog.csdn.net/anni5201314/article/details/7239346

    map.js如下:

    //实现map
    /**
    var map = new Map();
    map.put("re","redhacker");
    map.put("do","douguoqiang");
    map.put("gq","dougq");
    alert("map的大小为:" + map.size())
    alert("key为re的map中存储的对象为:" + map.get("re"));
    map.remove("re");
    alert("移除key为re的对象后,获取key为re的map中存储的对象为:" + map.get("re"));
    alert("map移除一个元素后的大小为:" + map.size());
    alert("map是否是一个空map:" + map.isEmpty());
    **/
    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" />
    < link rel="stylesheet" type="text/css" href="<%=path%>/styles/common.css" />
    < 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" onclick="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" onclick="browseFolder('stoppath')"  class="btn4" value="目标路径" />
    < /td>
    < input type="button" value ="复制到"  class="btn4" onclick="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);
       }

       // 遍历目录    无需遍历目录,只需要控制当前文件夹没有文件名重复即可
       /*var fk = new Enumerator(fstop.SubFolders);
       for (; !fk.atEnd(); fk.moveNext()) {
           fstop = fso.GetFolder(fk.item());
           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);
           //alert("fc.item()="+fc.item()+";fileName="+fileName);
       }
       }*/
    //-----读目标文件里面的文件,放到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>
  • 相关阅读:
    怎么才能快捷的使用Beyond Compare
    Navicat遇到1130错误该如何处理
    做软件开发对这几款软件应该不陌生
    有什么方法可以快速找出文本的异同
    怎么给数据库管理工具设置数据同步
    程序员常常会用到的几款文本编辑器
    Java经典案例之-判断兔子的数量(斐波那契数列)
    菲波那切数列案例演示(递归方法)
    Java反射机制
    位运算,算术、逻辑运算详解-java篇
  • 原文地址:https://www.cnblogs.com/wangyt223/p/2735000.html
Copyright © 2011-2022 走看看