JScript并不是我们熟知的JavaScript,但是跟JavaScript很像,如果要在Windows环境中做一些自动化工作,比直接写BAT批处理脚本要简单些。
JScript是由微软公司开发的活动脚本语言,是微软对ECMAScript规范的实现。JScript最初是随Internet Explorer 3.0于1996年8月发布。在网络程序员谈论Internet Explorer中的JavaScript的时候,他们实际上是指JScript。和其他活动脚本一样,它后来也被Windows Script Host(WSH)和Active Server Pages所支持。典型的JScript源文件使用的扩展名是.js。JScript最新的版本是基于尚未定稿的ECMAScript4.0版规范的JScript .NET,并且可以在微软的.Net环境下编译。JScript在ECMA的规范上增加了许多特性。 ——百度百科
准备 测试环境:Windows 10 专业版
测试文件夹目录结构如下:
1 2 3 4 5 6 7 8 9 --- . --- . --- --- --- . --- --- . --- --- . --- --- . --- --- .
test.bat是批处理文件,测试的时候直接点击这个文件运行,该文件内容如下:
1 2 3 4 5 6 7 8 cscript ./test.js pause
test.js文件是具体放JScript代码的地方,将下列功能的代码放在这里。
** 特别注意:中文系统下,将所有文件的编码格式改为GB2312,否则有乱码导致程序存在中文时有异常。**
遍历文件夹 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 var folderPath = "./folder1" ;var folers = GetFolderList(folderPath);for (; !folers.atEnd(); folers.moveNext()){ var folderName = folers.item(); WScript.Echo("文件夹名称:" +folderName.Name); WScript.Echo("文件夹路径:" +folderName); } function GetFolderList (folderspec ) { var fso, f, fc; fso = new ActiveXObject("Scripting.FileSystemObject" ); f = fso.GetFolder(folderspec); fc = new Enumerator(f.SubFolders); return (fc); }
输出结果:
1 2 3 4 5 6 7 8 9 10 11 C:\U sers\A dministrator\D esktop\t estfolder>cscript ./test.js Microsoft (R) Windows Script Host Version 5.812 版权所有(C) Microsoft Corporation。保留所有权利。 文件夹名称:folder1.1 文件夹路径:C:\U sers\A dministrator\D esktop\t estfolder\f older1\f older1.1 文件夹名称:folder1.2 文件夹路径:C:\U sers\A dministrator\D esktop\t estfolder\f older1\f older1.2 C:\U sers\A dministrator\D esktop\t estfolder>pause 请按任意键继续. . .
遍历所有文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /**** **** **** **** **** **** **** **** **** **** *** * 遍历所有文件** **** **** **** **** **** **** **** **** **** **** */ var folderPath = "./folder1"; var files = GetFolderFileList(folderPath); for (; !files.atEnd(); files.moveNext()) { var fileName = files.item(); WScript.Echo("文件名称:"+fileName.Name); WScript.Echo("文件路径:"+fileName); } /**** **** **** **** **** **** **** **** **** **** *** * 获取指定文件夹路径下的所有文件*@folderspec:文件夹路径 * return:文件夹下的文件集合** **** **** **** **** **** **** **** **** **** **** * /function GetFolderFileList(folderspec) { var fso, folder, files; fso = new ActiveXObject("Scripting.FileSystemObject"); folder = fso.GetFolder(folderspec); files = new Enumerator(folder.files); return files; }
输出结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 C:\U sers\A dministrator\D esktop\t estfolder>cscript ./test.js Microsoft (R) Windows Script Host Version 5.812 版权所有(C) Microsoft Corporation。保留所有权利。 文件名称:a.txt 文件路径:C:\U sers\A dministrator\D esktop\t estfolder\f older1\a .txt 文件名称:b.txt 文件路径:C:\U sers\A dministrator\D esktop\t estfolder\f older1\b .txt 文件名称:c.txt 文件路径:C:\U sers\A dministrator\D esktop\t estfolder\f older1\c .txt C:\U sers\A dministrator\D esktop\t estfolder>pause 请按任意键继续. . .
获取文件MD5值 有时候需要找出修改的文件,对比文件MD5值是有用的,耗时看文件大小,文件太大时间可能很长。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 /**** **** **** **** **** **** **** **** **** **** *** * 遍历所有文件,获取文件MD5值** **** **** **** **** **** **** **** **** **** **** */ var folderPath = "./folder1"; var files = GetFolderFileList(folderPath); for (; !files.atEnd(); files.moveNext()) { var fileName = files.item(); WScript.Echo(fileName.Name+"的MD5值:"+GetFileMD5(fileName)); } /**** **** **** **** **** **** **** **** **** **** *** * 获取指定文件夹路径下的所有文件*@folderspec:文件夹路径 * return:文件夹下的文件集合** **** **** **** **** **** **** **** **** **** **** * /function GetFolderFileList(folderspec) { var fso, folder, files; fso = new ActiveXObject("Scripting.FileSystemObject"); folder = fso.GetFolder(folderspec); files = new Enumerator(folder.files); return files; } /******************************************* *获取文件MD5值 *@filePath:脚本文件绝对路径 *******************************************/ function GetFileMD5(filePath) { var objShell = new ActiveXObject("WScript.Shell"); var iReturnMsg = objShell.Exec("cmd.exe /c certutil -hashfile \""+filePath+"\" MD5"); var result = iReturnMsg.StdOut.ReadAll(); var splitArr = result.split("\n"); var fileMD5 = splitArr[1].replace(/\s/g,""); return fileMD5; //WScript.Echo(fileMD5); }
输出结果:
1 2 3 4 5 6 7 8 9 10 C:\U sers\A dministrator\D esktop\t estfolder>cscript ./test.js Microsoft (R) Windows Script Host Version 5.812 版权所有(C) Microsoft Corporation。保留所有权利。 a.txt的MD5值:22d42eb002cefa81e9ad604ea57bc01d b.txt的MD5值:1efc98f0102b2109fb90307e6e1c484e c.txt的MD5值:ba2ee8e2ba48e6667dca8c83dab38f4c C:\U sers\A dministrator\D esktop\t estfolder>pause 请按任意键继续. . .
创建Excel文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 CreateExcelFile("./texcel.xlsx" ,3 ); function CreateExcelFile (filePathName,sheetCount ) { try { var ExcelApp = new ActiveXObject("Excel.Application" ); var WshShell = WScript.CreateObject ("WScript.Shell" ); var currentPath = WshShell.CurrentDirectory; var i; ExcelApp.Visible = false ; ExcelApp.DisplayAlerts = false ; var ExcelBook = ExcelApp.Workbooks.Add; for (i=1 ;i<sheetCount;++i) { ExcelBook.Worksheets.Add; } if (filePathName.indexOf("." ) == 0 ) { currentPath = currentPath + filePathName.slice(1 ); }else { currentPath = filePathName; } currentPath = currentPath.replace(/\//g ,"\\" ); ExcelBook.SaveAs(currentPath); }catch (e){ WScript.Echo("发生异常:" +e); }finally { ExcelApp.Quit(); } }