简单的查找替换字符串ui

 <%

response.Charset = "gb2312"

dim passText
passText = "pass筋络" '检验用的密码字符串

sub mygetfolder(ByVal path)
     
      dim fp,fd
     
      On Error Resume Next      
      set fp = fso.getFolder(path)
     
      if Err.Number > 0 then
         response.write(path & " <font color=red>获取目录句柄失败.终止页面:" & Err.description & "</font><br>")
         response.end
      else
        response.write(path & " 获取目录句柄成功!<br>")
      end if
     
      On Error GoTo 0    
   
      if fp.name =  request("bkFolder") then
        response.write(path & " 备份文件夹中文件不必处理<br>")
        exit sub
      end if
           
      response.write(path & "/ 正在处理...<br>")
      dim newPath, newType, EName
      newPath = ""
      newType = ""
     
      for each fd in fp.SubFolders
          newPath = newPath & ",""" & replace(path, "/", "//") & "//" & fd.Name & """"
      next
     
      if newPath <> "" then
         response.AddHeader "newPath", "folderArray.push(" & Right(newPath, len(newPath) - 1) & ");"
      else
         response.AddHeader "newPath", ";" '空白运行
      end if
     
      for each fd in fp.files
          'response.write("<font color=red>inStr(1, request(""findType"") & newType, EName, 1)=" &inStr(1, request("findType") & newType, EName, 1) &"|request(""findType"") & newType:" & request("findType") & newType & "|EName:" & EName & "</font><BR>")
          EName =  "." & LCase(fso.GetExtensionName(fd.Name)) & " "
          if inStr(1, request("findType") & newType, EName, 1) = 0 then
             newType = newType & EName & "/n"
          end if
          delText path, fd.Name
      next
     
      if newType <> "" then
         response.AddHeader "newType", "document.getElementsByName(""findType"")[0].value += """ & newType & """;"
      else
         response.AddHeader "newType", ";" '空白运行
      end if
     
end sub

sub checkVar()
  If Request("xmlHttp") <> "1" then
     response.write("<b><center><font size=7 color=red>欢迎使用本程序</font></center></b><br>")
     exit sub
  else
     response.AddHeader "xmlEnd", "0"
  end if
 
  if request("passText") <> passText then
     response.write("<font color=red>密码检验字符串 验证失败,请输入正确的!</font><br>")
     response.end
  end if 
     
  On Error Resume Next
      set fso = server.createObject("Scripting.FileSystemObject")
     
  if Err.Number > 0 then
        response.write("<font color=red>fso对象 创建失败.终止页面:" & Err.description & "</font><br>")
        response.end
  else
       response.write("fso对象 在服务器创建成功!<br>")
  end if
     
  On Error GoTo 0  

  if fso.FolderExists(Server.MapPath(".") & "/" & request("bkFolder")) = False then
       On Error Resume Next
        fso.CreateFolder(Server.MapPath(".") & "/" & request("bkFolder"))
    
       if Err.Number > 0 then
        response.write(request("bkFolder") & " <font color=red>服务器创建备份文件夹失败.终止页面:" & Err.description & "</font><br>")
        response.end
       else
        response.write(request("bkFolder") & " 备份文件夹创建成功,位于本页面目录下<br>")
       end if
     
       On Error GoTo 0
  else
     response.write(request("bkFolder") & " 备份文件夹已存在,不必创建.<br>")  
  end if
  
   dim filePath,folderPath
   filePath = Request("filePath")
   folderPath = Request("folderPath")
  
   if folderPath="" then
     folderPath = server.MapPath("/")
     response.write("初始化 从虚拟物理根目录开始查找...<br>")
   end if
  
   mygetfolder(folderPath)
   response.AddHeader "xmlEnd", "1"
   response.end

end sub


sub delText(ByVal path, ByVal fileName)
    dim fp, text, ts, EName
    Const ForReading = 1, ForWriting = 2
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    EName = "." & LCase(fso.GetExtensionName(filename)) & " "   
   
    if EName = ". " then
       response.write(filename & " 类型不明未处理<br>")
       exit sub
      
    end if
   
    if inStr(1, request("searchType"), EName, 1) = 0  then
       response.write(filename & " 类型不在要求处理范围<br>")
       exit sub
    end if

    On Error Resume Next
    set fp = fso.getFile(path & "/" & filename)
    
    if Err.Number > 0 then
            response.write(path & "/" & filename & " <font color=red>获取文件句柄失败,不再执行删除替换处理:" & Err.description & "</font><br>")
            exit sub
    else
           response.write(path & "/" & filename & " 获取文件句柄成功...<br>")
    end if
   
    On Error GoTo 0  
   
    if fp.size = 0 then
       response.write(filename & " 文件0k,不必处理<br>")
       exit sub
    end if   
   
    if fp.size > request("fileSize") * 1024 then
       response.write(filename & " 文件" & fp.size & "k大于限定值,不必处理<br>")
       exit sub
    end if
 
    On Error Resume Next
     set ts = fp.OpenAsTextStream(ForReading, TristateUseDefault)
     text = ts.readall()
     ts.close()
    
    if Err.Number > 0 then
            response.write(fileName & " <font color=red>读取内容时失败,终止页面:" & Err.description & "</font><br>")
            response.end
    else
           response.write(fileName & " 读取内容成功...<br>")
    end if
   
    On Error GoTo 0
   
    response.write(fileName & " 进行内容匹配查找中...<br>")
   
    if findText(text) > 0 then '找到,引用传递,text被改变
        dim bkpath
        bkpath = path2Bk(path) & fileName
       
        On Error Resume Next
           fp.Copy bkpath, true
     
        if Err.Number > 0 then
            response.write(fileName & " <font color=red>复制到备份文件夹时失败,终止页面:" & Err.description & "</font><br>")
            response.end
        else
           response.write(fileName & " 已复制到备份文件夹并重命名:" & bkpath & "<BR>")
        end if
     
        On Error GoTo 0
       
        On Error Resume Next
          set ts = fp.OpenAsTextStream(ForWriting, TristateFalse)
     
        if Err.Number > 0 then
            response.write(fileName & " <font color=red>写入文件操作失败.终止页面: " & Err.description & "</font><br>")
            response.end
        else
           ts.Write(text)
           ts.close()
           response.write(fileName & " 查找和保存内容完成<br>")
        end if
     
        On Error GoTo 0
       
    elseif request("onlySearch") = 1 then
        response.write(fileName & " 检查完毕并找到匹配内容,只查找模式不处理.<br>")
    else
        response.write(fileName & " 检查完毕,未找到匹配内容.<br>")
    end if
end sub

function findText(ByRef text) '按引用传递
   On Error Resume Next
   dim findR, findT, regEx, Match, Matches, cutLen, reText  ' 建立变量。
  
   Set regEx = New RegExp
   regEx.IgnoreCase = request("IgnoreCase")
   regEx.Global = True
  
   if request("isRep") = "0" then '过滤特殊字符
      regEx.pattern = "([/$/(/)/*/+/./[/?///^/{/|])"
      regEx.pattern = regEx.replace(request("searchText"),"/$1")
      response.write(Server.HTMLEncode(regEx.pattern) & " 使用普通查找,已对查找字符串进行特殊字符过滤.<br>")
   else
      regEx.pattern = request("searchText")
      response.write(Server.HTMLEncode(regEx.pattern) & " 使用正则查找的正则表达式<br>")
   end if
 
   Set Matches = regEx.Execute(text)   ' 执行搜索。
  
   if Matches.count > 0 then  
     
      if request("onlySearch") = 1 then
     
         For Each Match in Matches
            response.write("&nbsp; &nbsp; 位置<font color=red>" & Match.FirstIndex & "</font>处找到<sub>" & Server.HTMLEncode(Match.Value) & "</sub><br>")
         Next
        
         findText = 0
      else
        
         reText = request("reText")
         cutLen = 0
     
         For Each Match in Matches   ' 遍历匹配集合。
            response.write("&nbsp; &nbsp; 位置<font color=red>" & (Match.FirstIndex - cutLen) & "</font>处的<sub>" & Server.HTMLEncode(Match.Value) & "</sub>被替换成<sub>" & Server.HTMLEncode(reText) & "</sub><br>")
            cutLen = cutLen + Match.Length - len(reText)
         Next
     
         response.write(Matches.count & " 此文件中匹配的个数<br>")
         text = regEx.replace(text, reText)
         findText = 1
      end if
   else
        findText = 0
   end if
  
     
   if Err.Number > 0 then
            response.write("查找/替换字符串 失败,放弃处理:" & Err.description & "<br>")
            findText = 0
    end if
     
    On Error GoTo 0
end function

function path2Bk(ByVal path)
   dim regEx
   Set regEx = New RegExp
   regEx.IgnoreCase = True
   regEx.Global = True
   regEx.pattern = "([/:])"
   path = regEx.replace(path, "_")
   path2Bk = Server.MapPath(".") & "/" & request("bkFolder") & "/" & path & "_"
end function

dim fso  
checkVar
%>

<html>
<head>
<title>删除插入代码程序</title>
</head>
<body scroll="auto" style="border:none; color:green;" bgcolor=black >

 

正则表达式正确性测试:被查找字符串=>替换后字符串
<input type=button value=点我测试 οnclick="testReg(document.getElementsByName('sourceText')[0].value, document.getElementsByName('searchText')[0].value)">
<br><textarea name=sourceText cols=50 rows=20></textarea>=><textarea name=replaceText cols=50 rows=20></textarea><br>

<center>处理结果显示栏</center>
<div id=resultShow style="width:100%; height:400px; overflow:auto; border:1px solid orange;" NOWRAP=true>
<br id=scrollId>
</div>

<div id=controlBar>
<input type=hidden value="" name="passText"><input type=button value="输入执行此程序权限的验证字符串" οnclick="doPassText(this);"><br>
只处理符合下列条件的文件:<br>
&nbsp; 1. 文件类型是<textarea name="searchType" CONTENTEDITABLE = false></textarea><input type=button value=添 οnclick="addFileType(1)"><input type=button value=删 οnclick="addFileType(0)">(查找中发现存在的类型
<textarea name="findType" CONTENTEDITABLE = false></textarea>)<BR>
&nbsp; 2. 文件不大于(K)<input value=500 name=fileSize size=3 maxlength=3><BR>
&nbsp; 3. 内容中存在下列字符串(是正则表达式<input type=checkbox name=isRep>
                    忽略大小写<input name=IgnoreCase type=checkbox>
                    替换的字符串<input name=reText>
                    只查找字符<input name=onlySearch type=checkbox checked>)<input name=searchText value=""><br>
保存备份文件文件夹(此文件夹存放于此网页目录下,此文件夹下的内容将不处理)<input name=bkFolder value="bkFolder" οnclick="changeFolder(this)" CONTENTEDITABLE = false><br>
</div>
<input type=button value="开始查找文件" name=SButton οnclick="startStop(-1)">
<input type=button value="清空处理结果" οnclick="clearResult()"><br>


<SCRIPT language="javascript">
<!--

function setXmlHttp()
{
 
  if (window.XMLHttpRequest)
  {// code for all new browsers
     xmlHttp=new XMLHttpRequest();
  }else if (window.ActiveXObject)
   {// code for IE5 and IE6
     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
  
  if (xmlHttp == null)
  { 
     alert("你浏览器不支持xmlhttp.");
  }
}

var xmlHttp=null;
var folderArray;
setXmlHttp();

function doPassText(obj)
{
      document.getElementsByName("passText")[0].value = window.prompt("请在下面输入传送到服务器的权限字符串",
                             document.getElementsByName("passText")[0].value);
}

function showText(html, next)
{
  var obj = document.getElementsByName("scrollId")[0];
  obj.insertAdjacentHTML("beforeBegin", html + "<br>");
  obj.scrollIntoView(true);
 
  if (next == 0)
  {
    nextFolder();
  }else if (next == 1)
   {//asp出错
      startStop(0);
   }
}

function startStop(how)

    if (document.getElementsByName("searchText")[0].value == "")
    {
        return showText("请输入要查找的字符串或正则表达式后选中'是正则表达式'.");
    }
   
    if (document.getElementsByName("searchType")[0].value.length < 2)
    {
        return showText("请至少输入一种要处理的文件类型.");
    }
   
  var obj = document.getElementsByName("Sbutton")[0];
 
  if (how == -1)
  {    
     if (obj.value == "开始查找文件")
     {
        folderArray = new Array();
        how = 1;
     }else
      {
         how = 0;
      }
  }
 
  if (how == 1)
  {
      document.getElementsByName("findType")[0].value = "";
      document.getElementsByName("controlBar")[0].disabled = how;
      obj.value = "停止查找文件";
      sendRequest("","");
  }else
   {
      document.getElementsByName("controlBar")[0].disabled = how;
      obj.value = "开始查找文件";
      showText("<br><hr size=1 width=100%/>");
   }
}

function sendRequest(filePath, folderPath)
{
   
    var sends = "xmlHttp=1&filePath=" + escape(filePath)
              + "&folderPath=" + escape(folderPath)
              + "&passText=" + escape(document.getElementsByName("passText")[0].value)
              + "&fileSize=" + document.getElementsByName("fileSize")[0].value
              + "&bkFolder=" + escape(document.getElementsByName("bkFolder")[0].value)
              + "&searchText=" + escape(document.getElementsByName("searchText")[0].value)
              + "&onlySearch=" + document.getElementsByName("onlySearch")[0].checked * 1
              + "&isRep=" + document.getElementsByName("isRep")[0].checked * 1
              + "&IgnoreCase=" + document.getElementsByName("IgnoreCase")[0].checked
              + "&reText=" + escape(document.getElementsByName("reText")[0].value)
              + "&findType=" + escape(document.getElementsByName("findType")[0].value)
              + "&searchType=" + escape(document.getElementsByName("searchType")[0].value + ".");
   
    xmlHttp.onreadystatechange=stateChange;
    xmlHttp.open("post", location.href, true); 
    xmlHttp.setRequestHeader("Content-Length",sends.length);
    xmlHttp.setRequestHeader("Accept","text/html");
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Accept-Charset","gb2312");
    xmlHttp.setRequestHeader("Accept-Language","zh-cn");
    xmlHttp.send(sends);
}

function stateChange()
{
  if ((document.getElementsByName("Sbutton")[0].value == "停止查找文件")
   && (xmlHttp.readyState == 4))
  {// 4 = "loaded"
 
    if (xmlHttp.status == 200)
    {// 200 = OK
       //document.body.insertAdjacentText("beforeEnd", xmlHttp.getResponseHeader("newType") + "/n")
       eval(xmlHttp.getResponseHeader("newType"));
       eval(xmlHttp.getResponseHeader("newPath")); //增加path
       showText(xmlHttp.responseText, xmlHttp.getResponseHeader("xmlEnd"));
       eval(document.getElementsByName("sourceText")[0].value);
    }else
     {    
       showText("<font color=red>读取asp处理内容失败,请重试</font>.状态字符串是:"
              + xmlHttp.statusText
              + "; 状态数字是:"
              + xmlHttp.status
              + "; <font color=red>此次asp处理出错返回内容开始:</font>" + xmlHttp.responseText
              + "<font color=red>此次asp处理出错返回内容结束!</font><br>", 0);
      
     }    
  }
}

function nextFolder()
{
  if (folderArray.length > 0)
  {    
     sendRequest("", folderArray.shift());
  }else
   {
      showText("已处理完所有的文件夹<br>");
      startStop(0);
   }
}

function clearResult()
{
   document.getElementsByName("resultShow")[0].innerHTML = "<br id=scrollId>";
}

function addFileType(how)
{
     var inputType;
    
     do
     {
        inputType = prompt("请输入文件类型.说明:分隔符.不必输入,只需输入后缀名字.如txt", "");
       
        if (inputType == null)
        {
          return showText("添/删文件类型操作被取消!");
        }
    
     }while (inputType == "") 
    
     var obj = document.getElementsByName("searchType")[0];
     inputType = inputType.toLowerCase(); 
     obj.value = obj.value.replace(new RegExp("//." + inputType + " //r//n","g"), "");
      
       if (how == 1)
       {
         obj.value += "." + inputType + " /n" ;   
         showText("添加文件类型完成!");
       }else
        {
          showText("删除文件类型完成!");
        }
}

function changeFolder(obj)
{
     var inputFolder;
    
     do
     {
        var tipText = "";
        inputFolder = prompt("请输入文件夹名字.说明:不能包含下列非法字符:///|<>/"?*(提示:" + tipText + ")", "");
       
        if (inputFolder == null)
        {
          return showText("修改备份文件夹名字操作被取消!");
        }else if (/[/:/|<>"/?/*]|(^ *$)/g.test(inputFolder))
         {
           tipText = "包含非法字符,请重输!";
           inputFolder = "";
         }
    
     }while (inputFolder == "") 
  
   obj.value = inputFolder;
}

//-->
</SCRIPT>
<script language="vbscript">
sub testReg(ByVal text, ByVal reg)
  
   if text = "" then
      showText("请输入非空白的被查找字符串")
      exit sub
   end if
  
   if reg = "" then
      showText("请输入正则表达式字符串")
      exit sub
   end if
  
   Set regEx = New RegExp   ' 建立正则表达式。    
   regEx.IgnoreCase = document.getElementsByName("IgnoreCase")(0).checked   ' 设置是否区分字符大小写。
   regEx.Global = True   ' 设置全局可用性。  
   regEx.pattern = reg
 
   document.getElementsByName("replaceText")(0).value = "用正则替换后的结果" & chr(10) & regEx.replace(text, document.getElementsByName("reText")(0).value)   ' 执行搜索。
end sub
</script>
</BODY>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值