`
deer
  • 浏览: 86403 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

javascript 实现的文件拷贝(能够循环遍历所选文件夹)

阅读更多
javascript 实现的文件拷贝
刚学习js,做了个文件拷贝练习,只在IE下实现了,火狐不好用,有待改进........
代码如下,仅供参考.
FileCopy.html
<html>
	<head>
		<title>FileCopy LX</title>
		<script type="text/javascript" src="FileCopy.js"></script>
	</head>
	<body>
		<div align="center">
			<h1><font color="#00eeff">File Copy</font> </h1>
			<hr color="#0099ff"/>
		</div>
		<br/>
		<div>
			<table align="left">
				<tr>
					<td><font size="5">Choose Folder CopyFrom: </font></td>
					<td>
						<input type="text" name="pathFrom" id="pathFrom" value ="" size="100" />
						<input type="button" name="btnSelectPath" id="btnSelectPath" value ="Chose Folder" onclick="browseFolder('pathFrom')"/> 
						<hr color="#A4D3EE"/>
					</td>
				</tr>
			</table>
		</div>
		<br/><br/><br/><br/>
		<div>
			<table align="left">
				<tr>
					<td><font size="5">Choose Folder CopyTo:&nbsp;&nbsp;&nbsp; </font></td>
					<td>
						<input type="text" name="pathTo" id="pathTo" value ="" size="100" />
						<input type="button" name="btnSelectPath" id="btnSelectPath" value ="Chose Folder" onclick="browseFolder('pathTo')"/> 
						<hr color="#A4D3EE"/>
					</td>
				</tr>
			</table>
		</div>
		<br/><br/><br/>
		<hr color="RGB(250,120,120)"/>
		<div >
			<div ><font color="#436EEE"><b>Please write the name of files you wanted to copy to the table</b></font></div>
			<input type="button" name="clearTable" id ="clearTable" value="clear talbe" onclick="clearTable()"/>
			<table id = "myTable" border="1"  width="40%" bordercolor="#BCD2EE" cellpadding="0" cellSpacing="0" align="center">
				<tr >
					<td  align="center">the name of the files must be contains the Extension </td>
				</tr>
				<tr>
					<td>
						<input type="text" name="file" id="file0" value="" size="100"/>
					</td>
				</tr>
				<tr>
					<td>
						<div align="right" >
							<input type="button" name="addRow" id="addRow" value="addRow" onclick="addRow('myTable')"/>
						</div>
					</td>
				</tr>
			</table>
		</div>
		<hr color="RGB(250,120,120)"/>
		<div align="right" >
			<input type="button" name="btnRun" id="btnRun" value="Run" onclick="run()"/>
		</div>
	</body>
</html>


FileCopy.js

/*put files' names in the array*/
var fileNames = new Array();

/* select folder  */
function browseFolder(id){
	try{
		var Message = "Please choose the Folder!";
		var shell = new ActiveXObject("Shell.Application");
		var folder = shell.BrowseForFolder(0,Message,64,17);//start my computer
		
		//var folder = shell.BrowseForFolder(0,Message,0);//start my zhumian
		
		if( folder != null ){
			var folders = folder.items();
			var myFolder = folders.item();
			var myPath = myFolder.Path;
			
			//alert(myPath);
			if(myPath.charAt(myPath.length - 1) != "\\"){
				myPath = myPath + "\\";
			}
			document.getElementById(id).value = myPath;
			return myPath;
		}
		
	}catch(e){
		alert("wrong!");
	}
}

/* add rows to table*/
function addRow(myTable){
	var objTable = document.getElementById(myTable);
	var rowLength = objTable.rows.length;
	var newRow = objTable.insertRow(rowLength-1);//insert before 'rowLength-1'
	var newCell = newRow.insertCell(0);
	var fileId = rowLength-newRow.rowIndex-1
	//var txt = "<input type='text'"+" name='file"+ fileId + "'" + "id ='file" +fileId+ "'" + " value='' size='100'/>"
	var txt = "<input type='text'"+" name='file' id ='file" +fileId+ "'" + " value='' size='100'/>"
	newCell.innerHTML =txt;
	//alert(document.getElementById("file"+fileId).value);
	//alert(rowLength);
}

/* clear table's contents*/
function clearTable(){
	var objIdex;
	var objInput = document.getElementsByName("file");
	
	for (var i=0;i<objInput.length;i++){
		var txtInput = objInput[i].value;
		if (txtInput != null) {
			//alert(objInput[i].value);
			objInput[i].value = "";
		}
	}
}

/* copy the file*/
function copyFile(myFile){
    var toPath = document.all.pathTo.value;
	var fso = new ActiveXObject("Scripting.FileSystemObject");    
	var fFile = fso.GetFile(myFile);    
	fFile.Copy(toPath);    
}

/*searching files,copy it after founded */
function searchFiles(fFolder){
    var subFolder = new Enumerator(fFolder.SubFolders);
    
    for (; !subFolder.atEnd();subFolder.moveNext()){
    	searchFiles(subFolder.item());
    }
    
    var fFiles = new Enumerator(fFolder.files);
    
    for (; !fFiles.atEnd(); fFiles.moveNext()){
            var myFile = fFiles.item();
            var xIndex;
            
            for ( xIndex in fileNames ) {
            	 if (fileNames[xIndex] == myFile.name) {
            	    // find the file's name and copy it
            		copyFile(myFile);
            	}
            }
    }
}

/* get all the names of files*/
function getAllFilesNames(){
	var objIdex;
	var objInput = document.getElementsByName("file");
	
	for (var i=0;i<objInput.length;i++){
		var txtInput = objInput[i].value;
		if (txtInput != null) {
			//alert(objInput[i].value);
			fileNames[fileNames.length] = objInput[i].value;
		}
	}
	//alert("getNames:" + fileNames);
}

/*  check input contents*/
function checkInput(){
	// var strFrom = document.all["pathFrom"].value;
	var strFrom = document.getElementById("pathFrom").value;
	//alert("strFrom:"+strFrom);
	if (strFrom == "") {
		alter("please choose the copyFrom Folder!");
		document.getElementById("pathFrom").focus();
		return false;
	}
	
	var strTo = document.all["pathTo"].value;
	if (strTo == "") {
		alter("please choose the copyTo Folder!");
		document.getElementById("pathTo").focus();
		return false;
	}
	
	if (fileNames.length <= 0) {
		alter("please write the file's name which you want to copy!");
		document.getElementById("file0").focus();
		return false;
	}
}

/*   main run  */
function run(){
    checkInput();
    
	var fso = new ActiveXObject("Scripting.FileSystemObject");
	
    var folder = fso.GetFolder(document.all.pathFrom.value);
    
    getAllFilesNames();
	searchFiles(folder);
	alert("finish");
}

分享到:
评论

相关推荐

    flash批量改名

    在"改名器.jsfl"中,可能包含了一个循环结构,遍历指定目录下的所有Flash文件,并根据预设的规则(比如替换字符串、添加序列号等)为它们设置新的文件名。用户可能只需要提供一个基本模板或者规则,脚本就能自动完成...

    JavaScript三十道经典练习题

    在这个压缩包中,你将找到"JavaScript30-master"这个文件夹,它包含了30个不同的练习,每个练习都对应一个JavaScript编程挑战。 首先,让我们来看看这些经典练习涵盖的知识点: 1. **基础语法**:包括变量声明...

    字节前端第一期面试题(1).pdf

    6. 深度优先遍历和广度优先遍历的拷贝函数实现: 可以使用递归或队列来存储待访问的节点,然后按照DFS或BFS的方式复制对象的每个节点。 7. ES5和ES6继承的区别: ES6提供了class关键字来定义类和继承,而ES5中则是...

    java学习笔记整理

    - **删除文件夹及内容**: 递归删除文件夹下的所有文件和子文件夹。 ##### 8.4 文件列表和文件过滤器 - **列出文件**: `new File("dir").listFiles()` - **文件过滤器**: 使用`FilenameFilter`或`FileFilter`接口...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-24 3.php文件编程②-如何写文件 拷贝文件 创建和删除(文件夹、文件) 9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 ...

    史上最全传智播客PHP就业班视频课,8月份视频

    9-24 3.php文件编程②-如何写文件 拷贝文件 创建和删除(文件夹、文件) 9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 ...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-24 3.php文件编程②-如何写文件 拷贝文件 创建和删除(文件夹、文件) 9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 ...

    (全)传智播客PHP就业班视频完整课程

    9-24 3.php文件编程②-如何写文件 拷贝文件 创建和删除(文件夹、文件) 9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 ...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-24 3.php文件编程②-如何写文件 拷贝文件 创建和删除(文件夹、文件) 9-24 4.php文件编程③-文件的上传和下载 文件上传细节讨论 9-24 5.php文件编程④-mini文件共享网实现分析 9-24 6.PHP绘图技术 9-26 1 课程回顾 ...

    ExtAspNet_v2.3.2_dll

    -增加土耳其语言资料文件(feedback:abdullaharslan)。 -Grid的BoundField增加NullDisplayText属性,用于处理数据库中的null值,如果没有设置则默认为空字符串。 -修正DatePicker中的一个bug(31/01/2010将会返回...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -Grid1.Columns.FindColumnById函数被Grid1.FindColumn所替代。 -为TreeCheckEventArgs,TreeExpandEventArgs,TreeCommandEventArgs增加Node属性。 -为所有控件增加Focus(覆盖Control默认的Focus函数)和...

Global site tag (gtag.js) - Google Analytics