一个查找源代码文件中中文字符的脚本

时间:2022-01-02 10:55:41

项目中要把中文抽出来, 并且要求代码中的注释不要使用中文. 就写了这个脚本来查找代码中的中文字符.

 find_chinese.js

 

一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本/**/ /**
一个查找源代码文件中中文字符的脚本 * @Author : Barry Diu  2008-05-08
一个查找源代码文件中中文字符的脚本 * 找出目录下的php,js,htm文件中的中文字符的位置
一个查找源代码文件中中文字符的脚本 *  usage : wscript find_chinese.js  outputpath sourcefolder1 sourcefolder2 sourcefolder3 ...
一个查找源代码文件中中文字符的脚本 *  如果没有参数默认 搜索当前目录并把结果输出到当前目录的find_chinese.txt文件中
一个查找源代码文件中中文字符的脚本 *  eg.   wscript find_chinese.js
一个查找源代码文件中中文字符的脚本 *          wscript find_chinese.js   find.txt  C:ProjectAutobildwork runkmod  
一个查找源代码文件中中文字符的脚本 
*/

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本
var  ForReading  =   1 , ForWriting  =   2 ;    //  FSO的常量,不要改动
一个查找源代码文件中中文字符的脚本
var  fso, f1, fldr, foldpath, outputfolderpath, outputfile;
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本
var  searchFileTypeArr  =   new  Array( ' php ' ' js ' , ' htm ' , ' html ' );        //  要查找的文件类型的扩展名, 跟据你的需要修改
一个查找源代码文件中中文字符的脚本

一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
/**/ /*  显示参数
一个查找源代码文件中中文字符的脚本if(WScript.Arguments.length>0){
一个查找源代码文件中中文字符的脚本    for(i=0; i<WScript.Arguments.length; i++){
一个查找源代码文件中中文字符的脚本        WScript.Echo( i + " : "  +  WScript.Arguments(i) );
一个查找源代码文件中中文字符的脚本    }
一个查找源代码文件中中文字符的脚本}
一个查找源代码文件中中文字符的脚本
*/

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本fso 
=   new  ActiveXObject( " Scripting.FileSystemObject " );
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本foldpath 
=   new  Array( ' . ' );
一个查找源代码文件中中文字符的脚本outputfolderpath 
=   '' ;
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
if (WScript.Arguments.length > 0 ) ... {
一个查找源代码文件中中文字符的脚本     outputfolderpath 
= WScript.Arguments(0);
一个查找源代码文件中中文字符的脚本}

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
if (WScript.Arguments.length > 1 ) ... {
一个查找源代码文件中中文字符的脚本    foldpath 
= new Array();
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本    
for(i=1; i<WScript.Arguments.length; i++)...{
一个查找源代码文件中中文字符的脚本        foldpath[ i 
-1 ] = WScript.Arguments(i);
一个查找源代码文件中中文字符的脚本    }

一个查找源代码文件中中文字符的脚本}

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
for (i = 0 ; i < foldpath.length; i ++ ) ... {
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本    
if!fso.FolderExists( foldpath[i] ) )...{
一个查找源代码文件中中文字符的脚本        WScript.Echo(
"folder is not exist!!!");
一个查找源代码文件中中文字符的脚本    }

一个查找源代码文件中中文字符的脚本}

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本fldr 
=  fso.GetFolder(foldpath);
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本
// WScript.Echo(fldr);
一个查找源代码文件中中文字符的脚本

一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
if (outputfolderpath != '' ) ... {
一个查找源代码文件中中文字符的脚本     outputfile 
= outputfolderpath;
一个查找源代码文件中中文字符的脚本}

一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
else ... {
一个查找源代码文件中中文字符的脚本     outputfile 
= "find_chinese.txt";
一个查找源代码文件中中文字符的脚本}

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本f1 
=  fso.createtextfile(outputfile,  true ); 
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本
var  starttime  =   new  Date();
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本f1.WriteLine( starttime.toString() 
+   "  : Starting to search chinese characters in "  "   +  fldr  +   " " ..... " ) ;
一个查找源代码文件中中文字符的脚本f1.WriteBlankLines(
2 ) ; 
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
for ( i = 0 ; i < foldpath.length; i ++  ) ... {
一个查找源代码文件中中文字符的脚本     iterate(foldpath[i]);
一个查找源代码文件中中文字符的脚本}

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本f1.WriteBlankLines(
2 ) ; 
一个查找源代码文件中中文字符的脚本
var  endtime  =   new  Date();
一个查找源代码文件中中文字符的脚本f1.WriteLine( endtime.toString() 
+   "  : Search chinese characters finish " ) ;
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本
//  递归循环列出目录下的文件和子目录下的文件
一个查找源代码文件中中文字符的脚本
function  iterate(path)
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本
... {
一个查找源代码文件中中文字符的脚本   
var folder, folders, files, file,fileExtName, fileTypeIsCorrect;
一个查找源代码文件中中文字符的脚本   folder 
= fso.GetFolder(path);
一个查找源代码文件中中文字符的脚本   
一个查找源代码文件中中文字符的脚本   
// check files
一个查找源代码文件中中文字符的脚本
   files    =  new Enumerator(folder.files);
一个查找源代码文件中中文字符的脚本   
for (; !files.atEnd(); files.moveNext())
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本   
...{
一个查找源代码文件中中文字符的脚本       
// 过滤文件类型
一个查找源代码文件中中文字符的脚本
       fileTypeIsCorrect = false;
一个查找源代码文件中中文字符的脚本       fileExtName 
= getFileExtendName( files.item().Name );
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本       
for( i=0; i<searchFileTypeArr.length; i++)...{
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本             
if(  fileExtName == searchFileTypeArr[i] )...{
一个查找源代码文件中中文字符的脚本                 fileTypeIsCorrect 
= true;
一个查找源代码文件中中文字符的脚本             }

一个查找源代码文件中中文字符的脚本       }

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本       
if(!fileTypeIsCorrect)...{
一个查找源代码文件中中文字符的脚本           
continue;
一个查找源代码文件中中文字符的脚本       }

一个查找源代码文件中中文字符的脚本       
一个查找源代码文件中中文字符的脚本       
// 查找中文字符
一个查找源代码文件中中文字符的脚本
       checkChineseChar(files.item());
一个查找源代码文件中中文字符的脚本   }

一个查找源代码文件中中文字符的脚本
一个查找源代码文件中中文字符的脚本   
// 递归查找子目录 check subfolders
一个查找源代码文件中中文字符的脚本
   folders = new Enumerator(folder.SubFolders);
一个查找源代码文件中中文字符的脚本   
for (; !folders.atEnd(); folders.moveNext())
一个查找源代码文件中中文字符的脚本一个查找源代码文件中中文字符的脚本   
...{
一个查找源代码文件中中文字符的脚本       iterate(folders.item());
一个查找源代码文件中中文字符的脚本   }

一个查找源代码文件中中文字符的脚本}

一个查找源代码文件中中文字符的脚本

 

 

 

// 查找中文字符
function checkChineseChar(targetFile)
{
      var pattern;
   pattern = /[/u4E00-/u9FA5]|[/uFE30-/uFFA0]/gi;    // 中文 ;  判断使用    pattern.test(content)
   //pattern = /[/x00-/xff]/gi;                                   // 英文以外的文字, 判断使用         !pattern.test(content)
      var content;
   var output = '';
   var find = false;
   var line = 1;
   var rfile = fso.OpenTextFile(targetFile, ForReading);

      while( !rfile.AtEndOfStream ){  
          content = rfile.ReadLine();
           if ( pattern.test(content) ) {                                   // 注意 ! 的 有/无 !
       find = true;
                output += "     #line " + line + " ; " + content + "/r/n";
     }
          line++;  
      }  

  if(find){
         f1.WriteLine(targetFile);
         f1.WriteLine(output);
   f1.WriteBlankLines(1) ;
  }
}

// 获取文件扩展名
function getFileExtendName(filename){
     var length = filename.length;
     var charindex = filename.lastIndexOf(".");
     var extname = '';
     if(charindex>0){
         extname = filename.substring(charindex+1,length);
  }
     return extname.toLowerCase();
}

 

加一个 bat文件方便调用

find_chinese.bat

rem start to search...
wscript find_chinese.js