常用的JScript程式碼整理
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 專業版
測試資料夾目錄結構如下:
testfolder
|---test.bat
|---test.js
|---folder1
|---|---folder1.1
|---|---folder1.2
|---|---a.txt
|---|---b.txt
|---|---c.txt
test.bat是批處理檔案,測試的時候直接點選這個檔案執行,該檔案內容如下:
@rem
@rem
@rem 我是註釋
@rem
cscript ./test.js
pause
test.js檔案是具體放JScript程式碼的地方,將下列功能的程式碼放在這裡。
特別注意:中文系統下,將所有檔案的編碼格式改為GB2312,否則有亂碼導致程式存在中文時有異常。
遍歷資料夾
/*******************************************
*遍歷所有子資料夾
*******************************************/
var folderPath = "./folder1";
var folers = GetFolderList(folderPath);
for (; !folers.atEnd(); folers.moveNext())
{
var folderName = folers.item();
WScript.Echo("資料夾名稱:"+folderName.Name);
WScript.Echo("資料夾路徑:"+folderName);
}
/*******************************************
*獲取指定路徑資料夾下的所有子資料夾
*@folderspec:資料夾路徑
*return:子資料夾集合
*******************************************/
function GetFolderList(folderspec)
{
var fso, f, fc;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFolder(folderspec);
fc = new Enumerator(f.SubFolders);
return(fc);
}
輸出結果:
C:\Users\Administrator\Desktop\testfolder>cscript ./test.js
Microsoft (R) Windows Script Host Version 5.812
版權所有(C) Microsoft Corporation。保留所有權利。
資料夾名稱:folder1.1
資料夾路徑:C:\Users\Administrator\Desktop\testfolder\folder1\folder1.1
資料夾名稱:folder1.2
資料夾路徑:C:\Users\Administrator\Desktop\testfolder\folder1\folder1.2
C:\Users\Administrator\Desktop\testfolder>pause
請按任意鍵繼續. . .
遍歷所有檔案
/*******************************************
*遍歷所有檔案
*******************************************/
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;
}
輸出結果:
C:\Users\Administrator\Desktop\testfolder>cscript ./test.js
Microsoft (R) Windows Script Host Version 5.812
版權所有(C) Microsoft Corporation。保留所有權利。
檔名稱:a.txt
檔案路徑:C:\Users\Administrator\Desktop\testfolder\folder1\a.txt
檔名稱:b.txt
檔案路徑:C:\Users\Administrator\Desktop\testfolder\folder1\b.txt
檔名稱:c.txt
檔案路徑:C:\Users\Administrator\Desktop\testfolder\folder1\c.txt
C:\Users\Administrator\Desktop\testfolder>pause
請按任意鍵繼續. . .
獲取檔案MD5值
有時候需要找出修改的檔案,對比檔案MD5值是有用的,耗時看檔案大小,檔案太大時間可能很長。
/*******************************************
*遍歷所有檔案,獲取檔案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);
}
輸出結果:
C:\Users\Administrator\Desktop\testfolder>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:\Users\Administrator\Desktop\testfolder>pause
請按任意鍵繼續. . .
建立Excel檔案
CreateExcelFile("./texcel.xlsx",3);
/*******************************************
*建立Excel檔案
*@filePathName:檔案路徑,相對路徑或絕對路徑
*@sheetCount:Excel中Sheet的個數
*******************************************/
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,"\\");
//currentPath = currentPath.replace(/\\/g,"\\\\"); 路徑在變數中不用轉義
//儲存表格
ExcelBook.SaveAs(currentPath);
}catch(e){
WScript.Echo("發生異常:"+e);
}finally{
//用 Application 物件用 Quit 方法關閉 Excel。
ExcelApp.Quit();
}
}
相關文章
- python常用程式碼整理Python
- 頁面常用程式碼整理
- 常用操作單選框radio程式碼整理
- 點贊收藏:PyTorch常用程式碼段整理合集PyTorch
- 30 個Python程式碼實現的常用功能,精心整理版Python
- 常用的HTML程式碼
- css程式碼整理CSS
- Shell指令碼常用命令整理指令碼
- 常用程式碼
- 技術乾貨:Java程式碼常用工具類整理歸納Java
- 常用,好用的js程式碼JS
- 程式碼規範整理
- 常用的小工具程式碼
- 氣象中的常用程式碼
- 幾種常用的排序程式碼排序
- 原生js的常用方法整理JS
- 什麼是程式碼整理?
- WEB程式設計開發常用的程式碼Web程式設計
- Gorm常用程式碼片段GoORM
- SpringBoot camunda常用程式碼Spring Boot
- 逆向常用python程式碼Python
- Laravel常用程式碼合集Laravel
- JS常用程式碼塊JS
- 常用JS方法整理JS
- js常用方法整理JS
- 常用函式整理函式
- 總結常用的掛馬程式碼
- 軟著整理程式碼快速生成
- 用寫程式碼的方式來整理知識
- IEDA編寫程式碼常用的快捷鍵
- ssycms不常用的文章列表呼叫程式碼
- Golang中常用的程式碼優化點Golang優化
- 一些常用的程式碼規範
- 前端常用手寫程式碼前端
- Hibernate中常用CRUD程式碼
- 一些不常用的工具整理
- Awk常用用法整理
- Sed常用用法整理