Jelajahi Sumber

添加删除注释工具

liuhao 3 tahun lalu
induk
melakukan
064da8193f

TEMPAT SAMPAH
TEST_Prj/DeleteTools/StrollingWolf.exe


+ 188 - 0
TEST_Prj/DeleteTools/batch_add_copyright_to_fileheader.js

@@ -0,0 +1,188 @@
+ 
+//https://msdn.microsoft.com/en-us/library/aew9yb99(v=vs.85).aspx
+
+var debug=0;
+var fso = new ActiveXObject("Scripting.FileSystemObject");
+var fLog;
+
+if(debug==1)
+     fLog = fso.createtextfile("log.txt",true);
+var filters=['cxx','c','cpp','h'];
+var comment=
+"/****************************************************************\r\n"+
+"This is a simple tools for add block comments to c/cpp file's  header \r\n"+
+"Copy this js file to special directory which you want to add header comments.\r\n"+
+"double click and run it, It will recursive to add head copyright info to your c/cpp files \r\n\r\n\r\n"+
+"It's a part of StrollingWolf Comments Remove tools. \r\n"+
+"If you have any advice, please email to me: yaolixing01@gmail.com\r\n"+
+"Enjoy it!\r\n"+
+"					                                      ------2019 \r\n"+
+"*****************************************************************/\r\n";
+
+var ForReading = 1, ForWriting = 2, ForAppending = 8;
+var asDefault = -2, asUnicode = -1, asASCII = 0;
+
+function doWithFile(fl) 
+{
+    fl = fl + '';
+    //search file's header, If have exist block comments, then remove it, otherwise  add our copyright header.
+    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 , file is readonly. 
+    //ForWriting 2, means file is write only.  
+    //ForAppending 8 , means open file and appent from file end. 
+	var f = fso.OpenTextFile(fl, ForReading , false, asDefault);
+    if (!f) 
+    {
+        return;
+    }
+    
+   //judge whether a document begins with a comment 
+   var bStartWithCommentLine = 0, bStartWithCommentBlock=0;
+   var sline='';
+   //use state machine. skip all header comments. 
+   var sFirstLineSrc ="";
+   var nState = 0;
+   var nLineNum=0;
+   while (!f.AtEndOfStream)
+   {
+       sline = f.ReadLine(); 
+       nLineNum++;
+
+       if (/\S+/gi.test(sline))
+       {
+           if ( (nState&2)==0 && /^\s*\/\//gi.test(sline)) 
+           {
+              bStartWithCommentLine  = 1;
+              nState |= 1;//it's line comment.
+			  if(debug==1){
+			       fLog.WriteLine('line comment:'+sline +' state:'+nState + " line number:"+nLineNum); 
+			  }
+           }else if (/^\s*\/\*/gi.test(sline)) 
+           {
+              bStartWithCommentBlock = 1;
+              nState |= 2;//block comment start 
+			  if(debug==1){
+			      fLog.WriteLine('block comment start:'+sline +' state:'+nState+ " line number:"+nLineNum); 
+			  }
+			  if(/\*\//gi.test(sline)){
+				  //single line comment 
+				  nState &= ~2;//remove block comment state 
+				  if(debug==1){
+					  fLog.WriteLine('block comment end:'+sline+' state:'+nState + "line number:"+nLineNum); 
+				  }
+			  }
+           }else if( (nState&2)!=0 && /\*\//gi.test(sline))
+           {
+              nState |= 4;//block comment end
+			  nState &= ~2;//remove block comment state 
+			  if(debug==1){
+			      fLog.WriteLine('block comment end:'+sline+' state:'+nState + " line number:"+nLineNum); 
+			  }
+           }else if ((nState&2)==0  &&/\S+/gi.test(sline)) 
+           {
+              sFirstLineSrc = sline;
+			  nState=0;
+           }
+
+           if (sFirstLineSrc.length>0) 
+           {
+              break;
+           }
+       }
+   }
+
+	if(debug==1)
+	{
+	   if ( bStartWithCommentLine==1) 
+	   {
+		   fLog.WriteLine(sline); 
+	   }else if (bStartWithCommentBlock==1) 
+	   {
+		   fLog.WriteLine(sline); 
+	   }
+	}
+
+   //write data to another temp new file 
+   var fl2 = fl+'._slfsfsafsfxx0_';
+   var ftmp = fso.OpenTextFile(fl2, 2, true);
+   ftmp.WriteLine(comment);
+   if (sFirstLineSrc.length>0) 
+   {
+       ftmp.WriteLine(sFirstLineSrc);
+   }
+
+   //copy left contents of origin file. 
+   while (!f.AtEndOfStream)
+   {
+       sline = f.ReadLine(); 
+       ftmp.WriteLine(sline);
+   }
+
+    ftmp.Close();
+    f.Close();
+    
+    //del origin file
+    fso.DeleteFile(fl, true);
+    
+    //rename temp file to origin file. 
+    fso.MoveFile(fl2, fl);
+
+}
+var WSShell = WScript.CreateObject("WScript.Shell");
+function getPathFiles(spath)
+{
+    var fd = fso.GetFolder(spath);
+    var fc = new Enumerator(fd.files);
+
+    var folderName = fso.GetBaseName(spath);
+
+	if(folderName.indexOf('__')==0)
+	{
+		//we don't dowith  files which  is  '__'  as  filename's prefix 
+		if(debug==1){
+		    fLog.WriteLine(spath+', '+folderName); 
+		}
+		return;
+	} 
+
+    for (; !fc.atEnd(); fc.moveNext())
+    {
+        doWithFile(fc.item()); 
+    }
+    fc=null;
+
+    var childPaths = new Enumerator(fd.SubFolders);
+	var subfolder;
+    for (; !childPaths.atEnd(); childPaths.moveNext())
+    {
+		subfolder = childPaths.item();
+
+        getPathFiles(subfolder);
+    }
+    childPaths=null;
+}
+
+getPathFiles('.');
+if(debug==1)
+    fLog.Close();
+fso=null; 
+

+ 3 - 0
TEST_Prj/DeleteTools/cfg.ini

@@ -0,0 +1,3 @@
+[Setting]
+cleanfiles_filter=*.c;*.cpp;*.cxx;*.h;*.hpp;*.js;*.java;*.php;*.cs;*.rc
+open_dir=E:\BackUp\esp-aliyun\examples\solutions\smart_light\main\

+ 0 - 0
TEST_Prj/DeleteTools/files.ini