1. 程式人生 > >批量為資料夾及其子檔案下指定字尾名檔案新增頭註釋

批量為資料夾及其子檔案下指定字尾名檔案新增頭註釋

js指令碼程式,方便自由修改。


可以自由設定註釋內容。指定任意字尾名,目前該程式針對的是c/c++原始檔,頭部統一添加註釋。讀取原始碼時,如發現檔案頭部已有註釋時,會自動刪除以前的註釋頭。
支援子目錄下檔案遞迴批量修改。稍作修改就可以設定為不刪除,指令碼語言方便直接修改。
windows,將該檔案直接拷貝到原始碼所在目錄下,雙擊執行即可。
對於關注原始碼版權人士,釋出工程時使用。
稍作修改即可支援其他各種原始碼的註釋批量新增。
 
 
var fso = new ActiveXObject("Scripting.FileSystemObject");
//var fLog = fso.createtextfile("log.txt",true);
var filters=['cxx','c','cpp','h'];
var comment=
"/**********************************************\r\n"+
"                                               \r\n"+
"	              ylxUtil.dll 模組 \r\n"+
" ---------------版權所有,違者必究-------------------\r\n"+
" \r\n"+
"	v1.0  By 窮瘋了的程式猿 
[email protected]
2014.6.29\r\n"+ "***********************************************/\r\n"; function doWithFile(fl) { fl = fl + ''; //檢索檔案開頭是否已經有註釋,有的話,去掉註釋。沒有的話,直接新增 var s=''; var ext="", extPos = fl.lastIndexOf('.'); if (extPos!=-1) { ext = fl.substr(extPos+1).toLowerCase(); } //file's extend name filter var i=0; for( i=0;i<filters.length; i++) { if (filters[i] == ext) { break; } } if (i==filters.length && filters.length !=0) { return; } //ForReading 1 以只讀方式開啟檔案。 不能寫這個檔案。 //ForWriting 2 以寫方式開啟檔案 //ForAppending 8 開啟檔案並從檔案末尾開始寫。 var f = fso.OpenTextFile(fl, 1 , false); if (!f) { return; } //判斷檔案開頭處是否是註釋。 var bStartWithCommentLine = 0, bStartWithCommentBlock=0; var sline=''; //使用狀態機,跳過頭部所有註釋。 var sFirstLineSrc =""; var nState = 0; while (!f.AtEndOfStream) { sline = f.ReadLine(); if (/\S+/gi.test(sline)) { if (/^\s*\/\//gi.test(sline)) { bStartWithCommentLine = 1; nState |= 1;//行註釋 }else if (/^\s*\/\*/gi.test(sline)) { bStartWithCommentBlock = 1; nState |= 2;//塊註釋開始 }else if((nState&2 )&& /^\S*\*\//gi.test(sline)) { nState = 4;//塊註釋結束 }else if (!(nState&2 )&&/\S+/gi.test(sline)) { sFirstLineSrc = sline; } //找到非空行,又不是註釋,則直接退出迴圈。 if (nState==0) { sFirstLineSrc = sline; } if (sFirstLineSrc.length>0) { break; } } } if ( bStartWithCommentLine==1) { //fLog.WriteLine(sline); }else if (bStartWithCommentBlock==1) { //fLog.WriteLine(sline); } //寫入資料到另一臨時新建檔案 var fl2 = fl+'._slfsfsafsfxx0_'; var ftmp = fso.OpenTextFile(fl2, 2, true); ftmp.WriteLine(comment); if (sFirstLineSrc.length>0) { ftmp.WriteLine(sFirstLineSrc); } //拷貝原檔案剩下的內容 while (!f.AtEndOfStream) { sline = f.ReadLine(); ftmp.WriteLine(sline); } ftmp.Close(); f.Close(); //刪除原檔案 fso.DeleteFile(fl, true); //臨時檔案重新命名為原檔案。 fso.MoveFile(fl2, fl); } function getPathFiles(spath) { var fd = fso.GetFolder(spath); var fc = new Enumerator(fd.files); for (; !fc.atEnd(); fc.moveNext()) { doWithFile(fc.item()); } fc=null; var childPaths = new Enumerator(fd.SubFolders); for (; !childPaths.atEnd(); childPaths.moveNext()) { getPathFiles(childPaths.item());//rescue call } childPaths=null; } getPathFiles('.'); //fLog.Close(); fso=null;

為保證頭部關鍵註釋不被指令碼修改掉,請保證編碼時,關鍵註釋不放到檔案頭。檔案頭部的註釋一律為版權相關注釋。


相關推薦

批量資料及其檔案指定字尾檔案新增註釋

js指令碼程式,方便自由修改。 可以自由設定註釋內容。指定任意字尾名,目前該程式針對的是c/c++原始檔,頭部統一添加註釋。讀取原始碼時,如發現檔案頭部已有註釋時,會自動刪除以前的註釋頭。 支援子目錄下檔案遞迴批量修改。稍作修改就可以設定為不刪除,指令碼語言方便直接修改。

C++ 獲取指定資料指定字尾檔案

#include <dirent.h> #include <iostream> #include <regex> #include <string> std::vector<std::string> faceDescriptor

批量修改指定資料及其檔案所有檔案的名字

一個可以修改指定目錄下所有包含關鍵字的檔名稱的java小程式。 import java.io.File; /** * 高山仰止,景行行止;雖不能至,心嚮往之。 * * Create by w

Python將某資料及其資料某種格式的檔案移動到另一個指定檔案

import shutil,os new_path='/root/python_test/data/gp_fz' for derName, subfolders, filenames in os.walk('/root/python_test/data/gp'): print(derName

【筆記】window 使用c++遍歷資料及其資料檔案,並列印檔案路徑及各檔案內容

這兩天一直在學習如何使用c++遍歷資料夾、讀取檔案內容和寫入檔案。 話不多說,直接上程式碼 /** 檔案功能:遞迴遍歷資料夾,遍歷資料夾及其子資料夾和檔案.列印資料夾名稱、檔名稱和檔案數目*** 參考:https://www.cnblogs.com/collectionne/p/679230

刪除指定資料及其檔案/資料

// 刪除指定資料夾及其子檔案/子資料夾 private static void delDiskCatalogs(File file) { for (File file2 : file.listFiles()) { if (file2.is

python中如何遍歷資料及其資料中的所有檔案(附實現程式碼)

【時間】2018.10.27 【題目】python中如何遍歷資料夾及其子資料夾中的所有檔案 目錄 概述 概述       本文提供了python中如何遍歷資料夾及其子資料夾中的所有檔案的兩種方法。兩者均返回檔名列表(可以選擇檔名列表或者是包含完整路徑的檔名列

列出當前資料及其資料所有檔名稱

1.在當前資料夾下新建list.txt文件,輸入如下內容並儲存: DIR /S/B >filelist.txt  2.將list.txt重新命名為list.bat,儲存並執行。 3.可以看到當前資料夾下出現filelist.txt文件。

使用CMD模式批量刪除指定目錄(支援目錄中多層資料巢狀)指定格式檔案

直入主題 win鍵+r鍵,在執行裡面輸入CMD,開啟dos模式, 直接輸入del /? 出現del的幫助,可以根據需要選擇, 這裡用的是 /s命令 然後輸入就可以了 del /s G:\test\test\*.doc 最後的*.doc即為你要刪除的檔案

Files.walkFileTree複製,刪除資料及其資料

Files.walkFileTree的原理介紹 原型:static Path Files.walkFileTree(Path start, FileVisitor<? super Path>

在linux修改資料及其資料的許可權

加入-R 引數,就可以將讀寫許可權傳遞給子資料夾 例如chmod -R 777 /home/mypackage 那麼mypackage 資料夾和它下面的所有子資料夾的屬性都變成了777. 77

Centos授予普通使用者資料及其資料讀寫許可權

用普通使用者登入,授權命令: sudo chmod -R 777 /opt/module 一、臨時設定行號        輸入:set nu        取消行號:set nonu           上面的冒號也是要輸入的內容 二、永久設定行號 vim

利用Java實現找出一個資料中所有的以某個字尾命名的所有檔案

已經自學Java一個多月了,一直沒有利用Java實現自己的需求,直到這次,編寫Java程式,實現自己的需求,很有成就感。當然不會像程式設計大神一樣優秀,可是我會慢慢努力的。 因為需要在VS上配置PCL的環境,需要把PCL檔案中的以 ".lib" 結尾的檔案找出來,PCL庫檔

IO流_複製指定目錄指定字尾檔案並修改名稱案例

package cn.itcast_04; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; impo

IO流_檔案過濾器改進輸出指定目錄指定字尾的檔名稱案例、帶檔名稱過濾器的list()方法的原始碼

package cn.itcast_08; import java.io.File; import java.io.FilenameFilter; /* * 判斷E盤目錄下是否有後綴名為.jpg

Linux怎麼查詢指定字尾檔案以及批量修改後綴

今天做了一道Linux的題目,題目如下: 其中查詢並不難實現,使用find語句:find /var/log -name “*.log” 就可以實現,shell指令碼如下: #!/bin/bash find /var/log -name "*.log" | w

刪除指定目錄指定字尾檔案

//定時清除計劃任務日誌檔案,避免佔用太大磁碟空間 $folderpath = "/www/server/log";//要操作的目錄 $deltype = array('log'); foreach ($deltype as $file_type) { clearn_

使用FilenameFilter來找出目錄指定字尾檔案

在專案中需要查詢指定目錄下特定字尾的檔案,在jdk官網上檢視資料時找到了FilenameFilter這個類,怎麼用也寫了,但是就是沒給個例子,對有些人實在有些不方便,這也是寫這篇文章的初衷,雖然簡單但

Java 獲取指定目錄指定字尾的檔名稱

前面我們學習了File獲取指定路徑下的所有檔案或者資料夾的名稱,還有獲取指定路徑下所有的檔案物件。這篇,我們分別利用這兩個方法來做一個練習題,例如輸出桌面檔案中所有的png檔名稱。最後簡單看看檔案過濾器的使用,也通過解決這個問題。 1. 檔名稱方法 如果你桌面沒有png檔案,你可以換成jpg

用python批量獲取某路徑資料資料指定型別檔案,並按原資料結構批量儲存處理後的檔案

因為是把自己成功執行的整個程式碼按幾部分截取出來的,所以每一小節程式碼不一定能單獨執行,特此說明。 1.獲取某路徑資料夾及子資料夾下的指定pcm型別檔案的全部路徑 import os def eachfile(filepath):     pathdi