日期:2010-06-30  浏览次数:20995 次

   计算当前文件夹中,有多少行JS代码和ASP代码,并且还可统计代码有多少字节
  
  有示例代码
  
  <%
  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  '\\
  '\\ 来自 codeproject.com
  '\\ 计算js和asp代码
  '\\ 修改 bluedestiny
  '\\ mail:bluedestiny at 126.com
  '\\
  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  
  option explicit
  response.buffer=false
  
  class COUNT_CODE
   private fso,spath
   private asplines, jslines, aspbytes, jsbytes, aspwords
   private sub class_initialize
   set fso = createobject("scripting.filesystemobject")
   end sub
   private sub class_terminate
   set fso=nothing
   end sub
   private function iterate(path)
   dim folder, folders, files, file, ts, txt, arr, f
   set folder = fso.getfolder(path)
   set files = folder.files
   dim rx, c
   set rx = new regexp
   rx.ignorecase = true
   rx.global = true
   rx.pattern = " +"
   for each file in files
   if right(file.name,4)=".asp" or right(file.name,3)=".js" then
   set ts = file.openastextstream
   if ts.atendofstream then txt = "" else txt = ts.readall
   ts.close
   txt = rx.replace(txt," ")
   txt = replace(txt,vbcrlf&vbcrlf,vbcrlf)
   arr = split(replace(txt,vbcrlf," ")," ")
   aspwords = aspwords + ubound(arr)
   arr = split(txt,vbcrlf)
   if right(file.name,4)=".asp" then
   asplines = asplines + ubound(arr)
   aspbytes = aspbytes + len(txt)
   else
   jslines = jslines + ubound(arr)
   jsbytes = jsbytes + len(txt)
   end if
   end if
   next
   set folders = folder.subfolders
   for each f in folders
   iterate f.path
   next
   end function
  
   public property let path(s)
   spath=server.mappath(s)
   end property
   public sub count
   iterate(spath)
   end sub
   public sub printf
   response.write "ASP:" & "<br/>"
   response.write "Total Lines Coded: " & asplines & "<br/>"
   response.write "Total Bytes: " & aspbytes & "" & "<br/>"
   response.write "Total Individual Elements (words) Typed: " & aspwords & "<br/>"
   response.write "JScript:" & "<br/>"
   response.write "Total Lines Coded: " & jslines & "<br/>"
   response.write "Total Bytes: " & jsbytes
   end sub
  end class
  
  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  '\\示例代码
  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  
  dim o
  set o=new COUNT_CODE
  o.path="bluedestiny/"
  o.count
  o.printf
  %>