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>
---->
<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>
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5iTF5UR2YzN2kTN4IzMx8FMvw1NvwlMwITMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.gif)