批量为文件夹及其子文件下指定后缀名文件添加头注释
来源:互联网 发布:北师珠网络教育平台 编辑:程序博客网 时间:2024/05/03 15:30
js脚本程序,方便自由修改。
可以自由设置注释内容。指定任意后缀名,目前该程序针对的是c/c++源文件,头部统一添加注释。读取源码时,如发现文件头部已有注释时,会自动删除以前的注释头。
支持子目录下文件递归批量修改。稍作修改就可以设置为不删除,脚本语言方便直接修改。
windows,将该文件直接拷贝到源码所在目录下,双击执行即可。
对于关注源码版权人士,发布工程时使用。
稍作修改即可支持其他各种源码的注释批量添加。
可以自由设置注释内容。指定任意后缀名,目前该程序针对的是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 穷疯了的程序猿 crazy010110@163.com 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;
为保证头部关键注释不被脚本修改掉,请保证编码时,关键注释不放到文件头。文件头部的注释一律为版权相关注释。
0 0
- 批量为文件夹及其子文件下指定后缀名文件添加头注释
- 批量修改指定文件夹下所有后缀名的文件为另外后缀名的java代码
- java批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码
- java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码
- C++ 获取指定文件夹下指定后缀名文件
- linux 批量添加文件后缀名
- BAT 批量为文件夹下的文件添加前缀 语句
- Linux下rename批量改变同文件夹的文件后缀名
- Android 遍历删除SD卡中某一文件夹下的指定子文件夹及其子文件
- 删除指定文件夹及其子文件/子文件夹
- python列出指定文件夹下所有给定后缀名的文件
- 查找一个文件夹下指定后缀名文件的java方法
- 删除指定文件夹内指定后缀名文件
- 非递归遍历指定文件夹下的所有文件及其子文件夹
- 用批处理 将文件夹下的所有指定后缀名的文件,修改成自定义后缀名
- C# 查找指定文件夹下 指定后缀名的所有文件(文件列表)
- shell脚本:批量添加文件后缀名
- 批量添加 或修改文件后缀名
- Win8遭禁 国产操作系统获发展契机
- SyncFramewok使用总结
- 软件实习-倒排文档
- JS制作表格
- android:descendantFocusability用法简析
- 批量为文件夹及其子文件下指定后缀名文件添加头注释
- 软件实习-学生管理系统
- STL之字典序全排列
- 一个简单的基于MVC模式的登录验证过程
- XP和Ubuntu双系统安装图解
- IOS开发之生成IPA文件并安装到越狱后的真机上
- Oracle 更新Opatch、打补丁
- 二叉搜索树转双向链表(面试题27)
- android 菜瓜笔记之GD-GUI逆向代码结构调整