以前一直用vbscript来操作文件夹,才发现原来使用JavaScript也是可以的,肯定不如vbs用的简单,不过学习一下还是不错的
在Windows平台上, js可以调用很多Windows提供的ActivexObject,本文就使用js来实现文档处理, 和使用js编写ActiveX做一个简单介绍. 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> </head> <script type="text/javascript"> function readFolder(){ var filePath = "d:test"; var fso = new ActiveXObject("Scripting.FileSystemObject"); //加载控件 var f = fso.GetFolder(filePath); var underFiles = new Enumerator(f.files); //文件夹下文件 for (;!underFiles.atEnd();underFiles.moveNext()){ var fn = "" + underFiles.item(); //alert(fn); var content = readFile(fn,fso); alert(content); } } function readFile(path,fso){ var f1 = fso.GetFile(path); var fh = fso.OpenTextFile(f1, 1/*reading*/); var content = ''; while ( !fh.AtEndOfStream ) { content += fh.ReadLine(); } fh.close() return content; } function writeExcel(){ var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet"); ExcelSheet.Application.Visible = true; ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"; ExcelSheet.SaveAs("d:TEST.XLS"); ExcelSheet.Application.Quit(); } </script> <body> <input type="button" value="遍历文件夹" onclick="readFolder()"> <input type="button" value="写excel" onclick="writeExcel()"> </body> </html> JavaScript中ActiveXObject对象是启用并返回 Automation 对象的引用。使用方法: newObj = new ActiveXObject( servername.typename[, location]) ActiveXObject 对象语法有这些部分:其中newObj是必选项。要赋值为 ActiveXObject 的变量名。 servername是必选项。提供该对象的应用程序的名称。 typename是必选项。要创建的对象的类型或类。 location是可选项。创建该对象的网络服务器的名称。 切记:ActiveX是微软的东西,故而这玩意儿只有IE才支持! javaScript中利用ActiveXObject来创建FileSystemObject操作文件 一、功能实现核心:FileSystemObject 对象 要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。 二、FileSystemObject编程 使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。 (一)创建FileSystemObject对象 创建FileSystemObject对象的代码只要1行: var fso = new ActiveXObject("Scripting.FileSystemObject"); 上述代码执行后,fso就成为一个FileSystemObject对象实例。 (二)应用相关方法 创建对象实例后,就可以使用对象的相关方法了。比如,使用CreateTextFile方法创建一个文本文件: var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.createtextfile("c:myjstest.txt",true"); (三)访问对象相关属性 要访问对象的相关属性,首先要建立指向对象的句柄,这就要通过get系列方法实现:GetDrive负责获取驱动器信息,GetFolder负责获取文件夹信息,GetFile负责获取文件信息。比如,指向下面的代码后,f1就成为指向文件c:test.txt的句柄: var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.GetFile("c:myjstest.txt"); 然后,使用f1访问对象的相关属性。比如: 代码如下: var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.GetFile("c:myjstest.txt"); alert("File last modified: " + f1.DateLastModified); 执行上面最后一句后,将显示c:myjstest.txt的最后修改日期属性值。 但有一点请注意:对于使用create方法建立的对象,就不必再使用get方法获取对象句柄了,这时直接使用create方法建立的句柄名称就可以: 代码如下: var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.createtextfile("c:myjstest.txt",true"); alert("File last modified: " + f1.DateLastModified); 三、操作驱动器(Drives) 使用FileSystemObject对象来编程操作驱动器(Drives)和文件夹(Folders)很容易,这就象在Windows文件浏览器中对文件进行交互操作一样,比如:拷贝、移动文件夹,获取文件夹的属性。 (一)Drives对象属性 Drive对象负责收集系统中的物理或逻辑驱动器资源内容,它具有如下属性: l TotalSize:以字节(byte)为单位计算的驱动器大小。 l AvailableSpace或FreeSpace:以字节(byte)为单位计算的驱动器可用空间。 l DriveLetter:驱动器字母。 l DriveType:驱动器类型,取值为:removable(移动介质)、fixed(固定介质)、network(网络资源)、CD-ROM或者RAM盘。 l SerialNumber:驱动器的系列码。 l FileSystem:所在驱动器的文件系统类型,取值为FAT、FAT32和NTFS。 l IsReady:驱动器是否可用。 l ShareName:共享名称。 l VolumeName:卷标名称。 l Path和RootFolder:驱动器的路径或者根目录名称。 (二)Drive对象操作例程 下面的例程显示驱动器C的卷标、总容量和可用空间等信息: 代码如下: var fso, drv, s =""; fso = new ActiveXObject("Scripting.FileSystemObject"); drv = fso.GetDrive(fso.GetDriveName("c:")); s += "Drive C:" + " – "; s += drv.VolumeName + "n"; s += "Total Space: " + drv.TotalSize / 1024; s += " Kb" + "n"; s += "Free Space: " + drv.FreeSpace / 1024; s += " Kb" + "n"; alert(s); 四、操作文件夹(Folders) 涉及到文件夹的操作包括创建、移动、删除以及获取相关属性。 Folder对象操作例程 : 下面的例程将练习获取父文件夹名称、创建文件夹、删除文件夹、判断是否为根目录等操作: 代码如下: var fso, fldr, s = ""; // 创建FileSystemObject对象实例 fso = new ActiveXObject("Scripting.FileSystemObject"); // 获取Drive 对象 fldr = fso.GetFolder("c:"); // 显示父目录名称 alert("Parent folder name is: " + fldr + "n"); // 显示所在drive名称 alert("Contained on drive " + fldr.Drive + "n"); // 判断是否为根目录 if (fldr.IsRootFolder) alert("This is the root folder."); else alert("This folder isn't a root folder."); alert("nn"); // 创建新文件夹 fso.CreateFolder ("C:Bogus"); alert("Created folder C:Bogus" + "n"); // 显示文件夹基础名称,不包含路径名 alert("Basename = " + fso.GetBaseName("c:bogus") + "n"); // 删除创建的文件夹 fso.DeleteFolder ("C:Bogus"); alert("Deleted folder C:Bogus" + "n"); 五、操作文件(Files) 对文件进行的操作要比以上介绍的驱动器(Drive)和文件夹(Folder)操作复杂些,基本上分为以下两个类别:对文件的创建、拷贝、移动、删除操作和对文件内容的创建、添加、删除和读取操作。下面分别详细介绍。 (一)创建文件 一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)。 第一种是使用CreateTextFile方法。代码如下: 代码如下: var fso, f1; fso = new ActiveXObject("Scripting.FileSystemObject"); f1 = fso.CreateTextFile("c:testfile.txt", true); 第二种是使用Open