批量為資料夾及其子檔案下指定字尾名檔案新增頭註釋
可以自由設定註釋內容。指定任意字尾名,目前該程式針對的是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