批量文件查找替换功能的vbs脚本

时间:2022-11-16 00:23:32
  1. '============================================  
  2. 'code by lcx 修改网上原有的一个小程序,不知作者,那个程序没有对目录实现递归查找  
  3. '将本程序放在你要查找的目录下,或把查找的目录拖到此脚本上,估计还有bug  
  4. '=======================================================================================  
  5. On Error Resume next  
  6. Do Until False  
  7.         Findstr=InputBox("请输入你要查找的字符(串):""请输入")  
  8.         If Findstr <> "" Then  
  9.                 Exit do  
  10.         End If  
  11. Loop  
  12.  
  13. repwith=InputBox("请输入你要替换的字符(串):,如果留空则只为查找""请输入")  
  14.  
  15.  
  16. If Wscript.Arguments.Count <> 0 Then  
  17.         For i=0 To WScript.Arguments.Count-1  
  18.                 folderpath=WScript.Arguments(i)  
  19.                 find(folderpath)  
  20.         Next  
  21. Else  
  22.         '处理当前目录  
  23.         Set objShell = CreateObject("WScript.Shell")  
  24.         folderpath=objShell.CurrentDirectory  
  25.         find(folderpath)  
  26. End If  
  27.  
  28. '替换主程序  
  29. Sub find(path)  
  30.         set fso=CreateObject("Scripting.FileSystemObject")  
  31.         set current=fso.GetFolder(path)  
  32.         For Each file In current.Files  
  33.  
  34.                         set fsofile=fso.OpenTextFile(file, 1, true)  
  35.        On Error Resume next  
  36.                         tempstr=fsofile.Readall  
  37.  
  38.        If InstrRev(tempstr,Findstr, -1, 0)<>0 And repwith = "" Then   
  39.        with Fso.opentextfile(left(Wscript.ScriptFullName,len(Wscript.ScriptFullName)-len(Wscript.ScriptName))&"\re.txt",8,true)  
  40.                         .writeline file  
  41.        .close  
  42.        end with  
  43.        End If  
  44.  
  45.        If repwith <> "" Then  
  46.        tempstr=replace(tempstr, Findstr, repwith)  
  47.        set fsofile1=fso.OpenTextFile(file, 2, true)  
  48.                         fsofile1.WriteLine tempstr  
  49.        fsofile.close  
  50.        End if  
  51.  
  52.                          
  53.         Next  
  54.  
  55.    for each folder in current.subfolders   
  56.    Call find(folder.path)  
  57.    next  
  58.  
  59. set fso=nothing  
  60. End Sub  
  61.  
  62. msgbox "OK,查找的文件名保存在re.txt"