FSO的强大功能

复制代码 代码如下:

<HTML>  <HEAD>  <TITLE>笨狼代码大管家</TITLE>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style>  body  {  font-size:12;  BACKGROUND: #DADADA;  margin-left:5;  }  .folder  {  font-size:18;  cursor:hand;  }  .folderIcon  {  color:navy;  font-family:wingdings;  font-size:18;  cursor:hand;  }  .file  {  color:navy;  font-size:18;  cursor:hand;  height:21;  }  .fileIcon  {  color:navy;  font-family:wingdings;  font-size:18;  cursor:hand;  height:21;  display:inline;  }  input  {  width:20;  overflow:visible;  border:1px solid lightblue;  background-color:#cccccc;  cursor:text;  }  button  {  border:1px solid gray;  width:60;  margin-left:2;  cursor:hand;  font-size:12;  filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#eaeaff', endColorStr='#618fff', gradientType='0');  }  textarea  {  font-family:Verdana;  width:750;  height:630;  font-size:12px;  overflow:scroll;  }  #frmTree  {  WIDTH:200px;  height:630;  MARGIN: 0px;  PADDING: 0px;  overflow:scroll;  MARGIN-right:10;  }  #frmSeach  {  WIDTH:200px;  height:630;  MARGIN: 0px;  PADDING: 0px;  overflow:scroll;  MARGIN-right:10;  }  #hide_control  {  POSITION: absolute;  LEFT:213px;  TOP:10px;  WIDTH:10px;  height:630;  BACKGROUND: #DADADA;  padding-top:300;  cursor:e-resize;  border:1 solid gray;  }  #txtFrm  {  POSITION: absolute;  LEFT:230px;  TOP:10px;  WIDTH:100%;  MARGIN: 0px;  PADDING: 0px;  BACKGROUND: #DADADA;  }  #tab1  {  border:1 solid ;  cursor:hand;  }  #tab2  {  border:1 solid ;  cursor:hand;  BACKGROUND: gray;  }  #tab3  {  border:1 solid;  cursor:hand;  BACKGROUND: gray;  }  #tab4  {  border:1 solid ;  cursor:hand;  }  </style>  </HEAD>  <BODY onselectstart="vbs:selectControl" onkeydown="vbs:shortCut">  <div id="frmTree" onclick="vbs:f_Click" onkeydown="vbs:deletFile" >  <span id="tab1" >  目 录 </span>  <span id="tab2" onclick="vbs:showMe frmSeach,frmTree">  搜 索 </span>  <hr/>  <div id="tree" style='margin-left:0;color:navy;font-size:12;cursor:hand;' ></div>  </div>  <div id="frmSeach" onclick="vbs:f_Click" >  <span id="tab3" onclick="vbs:showMe frmTree,frmSeach" >  目 录 </span>  <span id="tab4">  搜 索 </span>  <hr/>  <div id="list" style='margin-left:0' onkeydown="deletFile">  <input id="searchKey" style="width:100"/>  <button onclick="vbs:seachFile" id="searchButton">查找</button><br/>  <div id="seachList" style='margin-left:0' >搜索结果</div>  </div>  </div>  <input type="button" id="hide_control" onmousedown="vbs:beginDrag" onmouseup="vbs:upHandler" bgcolor="#eeeeee"/>  <div valign="top" id="txtFrm">  标题:<input id="articleTitle" style="width:100" readonly/>  <button id="browse" onclick="vbs:browseMe" >预览</button>  <button id="saveButton" onclick="vbs:saveFile" >保存</button>  <button id="browse" onclick="vbs:createFile" >新建</button>  <button id="test" onclick="vbs:showHelp">说明</button>  行 <span id="Ln">1</span>  <textarea id="txt" onkeydown='vbs:TabTxt' onclick="vbs:showLn"></textarea>  </div>  <SCRIPT LANGUAGE="vbscript">  '**************************  '*****超级大笨狼***********  '**************************  on error resume next  window.resizeTo window.screen.availWidth,window.screen.availHeight  window.moveTo 0,0  Set fso = CreateObject("Scripting.FileSystemObject")  dim thisFileDir'定义本文件绝对路径  dim thisFileName'定义本文件名  dim thisFileFolder'定义本文件夹路径  thisFileDir = replace(window.location.href,"file:///","")  thisFileDir = unescape(replace(thisFileDir,"/","\"))  thisFileName = LastOne(thisFileDir,"\")  thisFileFolder=getFolderDir(thisFileDir)  tree.title = thisFileFolder  dim currentDir'当前路径  dim currentFile'当前文件  dim currentDiv'当前DIV对象  dim currentSpan'当前Span对象  dim delatX  dim dragAble:dragAble = false  currentDir = thisFileFolder  set currentDiv = tree  tree.innerText = getTxtName(thisFileName)  showMe frmTree,frmSeach  showFolder tree  sub showLn  Ln.innerText = cint((window.event.offsetY-2)/15)+1  end sub  sub shortCut  if window.event.keyCode=83 and window.event.ctrlKey then  if currentFile<>"" then saveFile  window.event.cancelBubble = true  window.event.returnValue = false  end if  if window.event.keyCode=66 and window.event.ctrlKey then  browseMe  window.event.cancelBubble = true  window.event.returnValue = false  end if  if window.event.keyCode=78 and window.event.ctrlKey then  createFile  window.event.cancelBubble = true  window.event.returnValue = false  end if  end sub  sub browseMe  dim win  set win=window.open()  win.document.write txt.value  end sub  sub createFile  '点创建按钮,真的创建了.  if vartype(currentSpan)<>0 then currentSpan.style.color = "navy"  if currentDir ="" then  '如果点到了文件  currentDir=getFolderDir(currentFile)  else  '点到了文件夹  dim n  set n=currentDiv.nextSibling  do  if vartype(n) =9 then exit do  if left(n.title,len(currentDir)) <> currentDir then exit do  set currentDiv =n  set n=n.nextSibling  loop  end if  dim re,newFile,s,f  set re = new RegExp  re.Pattern = "[^\d]"  re.Global=true  newFile = currentDir & "新收藏" & re.Replace(mid(cstr(now()),3),"") & ".txt"  currentFile=newFile'新建文件是当前文件  '构造innerHTML  s = "<div class='file' title='" & newFile  s = s & "' style='margin-left:"  if currentDiv.className = "file" then  s = s & currentDiv.style.marginLeft & ";' > "  else  s = s & px2Int(currentDiv.style.marginLeft) + 8 & ";' > "  end if  s = s & "<span class='fileIcon'>2" & "</span>"  s = s & "<input value='"  s = s & getTxtName(lastOne(newFile,"\")) & "' title='" & getTxtName(lastOne(newFile,"\")) & "' onchange='vbs:reName me' />"  s = s & "</div>"  '插入innerHTML  currentDiv.insertAdjacentHTML "AfterEnd",s  articleTitle.value = getTxtName(lastOne(newFile,"\"))  txt.value = ""  currentDir = ""  set currentDiv = currentDiv.nextSibling  set currentSpan = currentDiv.getElementsByTagName("SPAN")(0)  currentSpan.style.color = "red"  '创建文件  set f=fso.CreateTextFile(newFile)  f.close  end sub  function getFolderDir(fullDir)  '输入得到全路径,得到文件夹路径  s=LastOne(fullDir,"\")  getFolderDir = left(fullDir,len(fullDir)-len(s))  end function  sub saveFile  '保存对文件的修改  Dim st  Set st = fso.OpenTextFile(currentFile, 2, True)  st.Write txt.value  st.close  end sub  sub deletFile  '删除文件  dim n  if window.event.keyCode =46 and window.event.srcElement.tagName<>"INPUT" then  if currentFile<>"" then  if currentFile = thisFileDir then  alert "不允许删除本文件!"  exit sub  end if  if fso.FileExists(currentFile) then  fso.deletefile currentFile,true  currentDiv.parentElement.removeChild currentDiv  txt.value = ""  currentFile = ""  articleTitle.value = ""  end if  end if  if currentDir<>"" then  if currentDir = thisFileFolder then  alert "不允许删除根目录!"  exit sub  end if  set n = currentDiv.nextSibling  if window.confirm( currentDir & vbcrlf & "这个文件夹有子文件,你要删除全部子文件吗?") then  do  if vartype(n) =9 then exit do  if px2Int(n.style.marginLeft) <= px2Int(currentDiv.style.marginLeft) then exit do  n.parentElement.removeChild n  set n=currentDiv.nextSibling  loop  if fso.FolderExists(currentDir) then fso.DeleteFolder currentDir  currentDiv.parentElement.removeChild currentDiv  end if  end if  end if  end sub  sub showMe(obj1,obj2)  obj1.style.display=""  obj2.style.display="none"  end sub  sub beginDrag  '开始拖拽  delatX=window.event.clientX - px2Int(hide_control.currentStyle.left)  document.attachEvent "onmousemove",getRef("moveHandler")  dragAble = true  window.event.cancelBubble = true  end sub  sub moveHandler  '移动绑定事件  if not dragAble then exit sub  dim x  x = window.event.clientX - delatX  hide_control.style.left= x & "px"  frmTree.style.width = abs( x - 10) & "px"  frmSeach.style.width = abs( x - 10) & "px"  txtFrm.style.left=( x + 20) & "px"  window.event.cancelBubble=true  end sub  sub upHandler  '放开绑定事件  document.detachEvent "onmousemove",getRef("moveHandler")  dragAble = false  window.event.cancelBubble=true  end sub  function getTxtName(fullName)  '去掉文件名后缀  dim s:s=lastOne(fullName,".")  getTxtName = left(fullName ,len(fullName)-len(s)-1)  end function  sub reName(obj)  '改名  dim Arr,a  Arr=array("/","\",":","*","?",chr(34),"|","<",">")  for each a in Arr  if instr(obj.value,a) >0 then  alert "命名不能含有/\:*?" & chr(34) & "|<>其中的一个"  obj.focus  exit sub  end if  next  dim oldName,newName,oldPath,oldType  oldName = obj.parentElement.title  oldPath = getFolderDir(oldName)  oldType = lastOne(oldName,".")  newName = oldPath & obj.value & "." & oldType  Set f = fso.GetFile(oldName)  f.copy newName  f.delete True  obj.parentElement.title = newName  articleTitle.value = getTxtName(lastOne(newName,"\"))  end sub  Function LastOne(Str,splitStr)  '输入字符和分隔符,得到最后一部分  LastOne = right(Str,len(Str)-InStrRev(Str,splitStr))  End Function  sub selectControl  '控制页面选择的状态  if window.event.srcElement.tagName<>"INPUT" and window.event.srcElement.tagName<>"TEXTAREA" then  document.selection.clear  end if  end sub  function isTXT(fileNameStr)  '判断是否是文本类型的文件  dim s,Arr,a,returnValue  returnValue = false  s=lcase(LastOne(fileNameStr,"."))  Arr=array("txt","htm","html","asp","csv","aspx","xml","js","vbs","ini","bat","css","htc","hta","xsl","xslt","sql")  for each a in Arr  if a=s then  returnValue =true  exit for  end if  next  isTXT = returnValue  end function  sub showFolder(obj)  dim folderspec :folderspec = obj.title  obj.setAttribute "parsed",true  if not fso.FolderExists(folderspec) then  alert folderspec & "该文件夹不存在,也许是被移动了,所以刷新一下本程序"  window.location.reload  exit sub  end if  dim f, f1, sf,sf1,i,s,fName  set f=fso.GetFolder(folderspec)  set sf=f.Subfolders  re = re & f.name & "\"  s=""  for each sf1 in sf  s = s & "<div class='folder' title='" & sf1.path & "\' style='margin-left:" & cint(replace(obj.style.marginLeft,"px","")) + 8 & ";'>"  s = s & "<span class='folderIcon'>0" & "</span><input value='" & sf1.name & "' readonly style='cursor:hand;'/></div>"  next  For Each f1 in f.Files  if isTXT(f1.name) then  s = s & "<div class='file' title='" & f1.path  s = s & "' style='margin-left:"  s = s & px2Int(obj.style.marginLeft) + 8 & ";' > "  s = s & "<span class='fileIcon'>2" & "</span>"  s = s & "<input value='"  fName = getTxtName(f1.name)  s = s & fName & "' title='" & fName & "' onchange='vbs:reName me' />"  s = s & "</div>"  end if  Next  obj.insertAdjacentHTML "AfterEnd",s  end sub  function px2Int(px)  px2Int = cint(replace(px,"px",""))  end function  sub f_Click()  dim obj,d,f,state  set obj = window.event.srcElement  if obj.id="searchKey" then exit sub  if obj.tagName<>"SPAN" and obj.tagName<>"INPUT" then exit sub  set currentDiv = obj.parentElement  set obj = currentDiv.getElementsByTagName("SPAN")(0)  window.event.cancelBubble = true  select case obj.className  case "folderIcon"  '点到了文件夹  if vartype(currentSpan)=8 then  currentSpan.style.color = "navy"  end if  set currentSpan = obj  state = abs(cint(obj.innerHTML) -1)  obj.innerHTML = state  obj.style.color="red"  set d = obj.parentElement  currentDir = d.title  currentFile = ""  if d.getAttribute("parsed")=true then  '合拢  fold d,state  else  '解析  showFolder d  end if  case "fileIcon"  '点到了文件,在textArea里面载入文本文件  if vartype(currentSpan)=8 then  currentSpan.style.color = "navy"  end if  set currentSpan = obj  obj.style.color="red"  readText obj.parentElement.title  currentDir = ""  currentFile = obj.parentElement.title  end select  end sub  sub fold(o,stateOpen) '合拢  dim n  set n=o.nextSibling  do  if vartype(n) =9 then exit do  if px2Int(n.style.marginLeft) <= px2Int(o.style.marginLeft) then exit do  if stateOpen=1 then n.style.display="" else n.style.display="none"  set n=n.nextSibling  loop  end sub  sub readText(filePath)  Dim f,fName  if not fso.FileExists(filePath) then  alert filePath & vbcrlf & "该文件不存在,也许是被移动了,所以刷新一下本程序"  window.location.reload  exit sub  end if  'TXT已经加载的当前文件不再加载.  if filePath = currentFile then exit sub  txt.value = ""  Set f = fso.OpenTextFile(filePath, 1, true)  if not f.AtEndOfStream then  txt.value = f.readAll  else  txt.value = ""  end if  fName = lastOne(filePath,"\")  articleTitle.value = getTxtName(fName)  f.Close  Ln.innerText = 1  End sub  sub TabTxt()  '支持tab键的文本框  if window.event.keyCode=38 then  if cint(Ln.innerText) >1 then Ln.innerText = cint(Ln.innerText)-1  end if  if window.event.keyCode=40 then  Ln.innerText = cint(Ln.innerText)+1  end if  if window.event.keyCode<> 9 then exit sub  dim sel,mytext  set sel = document.selection.createRange()  'txt.createTextRange  mytext = sel.text  if len(mytext)=0 then  sel.text =string(4," ")  window.event.cancelBubble = true  window.event.returnValue = false  exit sub  end if  dim t,Arr  t=0  Arr = split(mytext,vbcrlf)  if window.event.shiftKey then  '按sift  for i=0 to ubound(Arr)  if left(Arr(i),1)=vbtab then  Arr(i) = mid(Arr(i),2)  t= t + 1  else  for j=1 to 4  if left(Arr(i),1)=" " then  Arr(i) = mid(Arr(i),2)  t= t + 1  else  exit for  end if  next  end if  next  t= t  else  '不按sift  for i=0 to ubound(Arr)  Arr(i) = vbtab & Arr(i)  t= t +1  next  end if  mytext = join(Arr,vbcrlf)  sel.text = mytext  sel.collapse true  sel.moveEnd "character",0  sel.moveStart "character",(len(mytext) * -1) + t  sel.select()  window.event.cancelBubble = true  window.event.returnValue = false  end sub  '下面是关于搜索  dim seachResult'查找结果  dim num '结果数量  dim word'搜索关键字  tagStop = false  seachResult =""  sub seachFile()  num =0  seachList.innerText = "搜索结果"  word = searchKey.value  seachResult =""  if trim(word)="" then  alert "关键字为空!"  searchKey.focus  exit sub  else  dim l  for each l in list.getElementsByTagName("DIV")  if l.id<>"seachList" then list.removeChild l  next  seachList.innerText = "搜索结果"  seachWord thisFileFolder  seachList.insertAdjacentHTML "AfterEnd",seachResult  seachList.innerText = "搜索结果:" & num & "个"  alert "搜索完毕!"  end if  end sub  sub seachWord(theFolder)  dim f,f1,st,re,fd,fd1  set f = fso.GetFolder(theFolder)  for each f1 in f.Files  if isTxt(f1.name) then  if instr(f1.name,word)>0 then  seachResult = seachResult & "<div class='file' title='" & f1.path  seachResult = seachResult & "'><span class='fileIcon'>2" & "</span>"  seachResult = seachResult & "<input value='"  fName = getTxtName(f1.name)  seachResult = seachResult & fName & "' title='" & fName & "'>"  seachResult = seachResult & "</div>"  num = num + 1  else  set st = f1.OpenAsTextStream  '逐行读  Do While st.AtEndOfStream <> True  if instr(st.ReadLine,word)>0 then  num = num +1  seachResult = seachResult & "<div class='file' title='" & f1.path  seachResult = seachResult & "'><span class='fileIcon'>2" & "</span>"  seachResult = seachResult & "<input value='"  fName = getTxtName(f1.name)  seachResult = seachResult & fName & "' title='" & fName & "'>"  seachResult = seachResult & "</div>"  exit do  end if  Loop  st.Close  end if  end if  next  set fd = fso.GetFolder(theFolder)  for each fd1 in fd.SubFolders  seachWord fd1  next  end sub  sub showHelp  dim msg  msg = " 文本代码管理工具【IE5.5以上版本】" & vbcrlf  msg = msg & "------------------------------------------------" & vbcrlf  msg = msg & " 使用方法:放到文本类型的文件夹里面,双击运行。" & vbcrlf  msg = msg & "功能:" & vbcrlf  msg = msg & "1,快速浏览,预览CTRL+B,搜索文本类型的文件和代码;" & vbcrlf  msg = msg & "2,按DEL可以删除点中的文件和文件夹;" & vbcrlf  msg = msg & "3,可以修改文件名和文字内容,CTRL+S保存;" & vbcrlf  msg = msg & "4,可以创建文件CTRL+N并且编辑保存;" & vbcrlf  msg = msg & "5,文本编辑支持TAB和shift+TAB键;" & vbcrlf  msg = msg & vbcrlf  msg = msg & "作者:CSDN超级大笨狼[2005/1/18版本]" & vbcrlf  msg = msg & "欢迎传播使用,交流代码[email protected]" & vbcrlf  msg = msg & "http://superdullwolf.cnzone.net/index.asp" & vbcrlf  alert msg  end sub  </SCRIPT>  </BODY>  </HTML> 

相关推荐