首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过比较文件中的字符串来查找和替换?

通过比较文件中的字符串来查找和替换?
EN

Stack Overflow用户
提问于 2014-10-11 14:02:41
回答 2查看 79关注 0票数 0

例如。我得到我需要的所有字符串,并将其写入文件。

代码语言:javascript
复制
---------- .\A.txt
    //...etc
        const-string/jumbo v3, "startedinbetween"
        const-string/jumbo v5, "startedinbetween"
        const-string/jumbo v3, "firsttimeappstarted"
        const-string/jumbo v3, "firsttimeappstarted"
    //...etc

然后我修改这个字符串,如下所示

代码语言:javascript
复制
---------- .\A.txt
    //...etc
        const-string/jumbo v3, "1"
        const-string/jumbo v5, "2"
        const-string/jumbo v3, "3"
        const-string/jumbo v3, "4"
    //...etc

有没有可能在源文件中再次找到它,并用更改后的字符串替换,前提是订单没有被更改?例如preg_replace或grep。

代码语言:javascript
复制
"const-string/jumbo v3, 'startedinbetween'" => "const-string/jumbo v3, '1'"
"const-string/jumbo v3, 'startedinbetween'" => "const-string/jumbo v3, '2'"
"const-string/jumbo v3, 'firsttimeappstarted'" => "const-string/jumbo v3, '3'"
//etc
EN

回答 2

Stack Overflow用户

发布于 2014-10-11 16:12:34

这是一个查找和替换程序。

代码语言:javascript
复制
On Error Resume Next
Set ShellApp = CreateObject("Shell.Application")
ReportErrors "Creating Shell.App"
set WshShell = WScript.CreateObject("WScript.Shell")
ReportErrors "Creating Wscript.Shell"
Set objArgs = WScript.Arguments
ReportErrors "Creating Wscript.Arg"
Set regEx = New RegExp
ReportErrors "Creating RegEx"
Set fso = CreateObject("Scripting.FileSystemObject")
ReportErrors "Creating FSO"

If objArgs.Count = 0 then
        wscript.echo "No parameters", 16, "Serenity's ReplaceRegExp"
        ReportErrors "Help"
ElseIf objArgs.Count = 1 then
        wscript.echo "Only one parameter", 16, "Serenity's ReplaceRegExp"
        ReportErrors "Help"
ElseIf objArgs.Count = 2 then
        Set srcfile = fso.GetFile(objArgs(0))
        ReportErrors "srcFile"
        If err.number = 0 then Set TS = srcFile.OpenAsTextStream(1, 0)
        If err.number <> 0 then
            wscript.echo err.description & " " & srcFile.path, 48, "Serenity's Search" 
            err.clear
        else
            ReportErrors "TS" & "     " & srcFile.path
            Src=ts.readall
            If err.number = 62 then
                err.clear
            else
                ReportErrors "ReadTS" & "     " & srcFile.path
                regEx.Pattern = objArgs(1) 
                regEx.IgnoreCase = True
                regEx.Global = True
                If regEx.Test(Src) = True then
                    wscript.echo "Found in " & srcfile.path, 64, "Serenity's Search" 
                End If
            End If
        End If
        ReportErrors "Check OK" & "     " & srcFile.path

Elseif objArgs.count = 3 then
        Set srcfile = fso.GetFile(objArgs(0))
        ReportErrors "srcFile"
        If err.number = 0 then Set TS = srcFile.OpenAsTextStream(1, 0)
        If err.number <> 0 then
            wscript.echo err.description & " " & srcFile.path, 48, "Serenity's Search" 
            err.clear
        else
            ReportErrors "TS" & "     " & srcFile.path
            Src=ts.readall
            If err.number = 62 then
                err.clear
            else
                ReportErrors "ReadTS" & "     " & srcFile.path
                regEx.Pattern = objArgs(1) 
                regEx.IgnoreCase = True
                regEx.Global = True
                NewSrc= regEx.Replace(Src, objArgs(2)) 
                If NewSrc<>Src then
                    wscript.echo "Replacement made in " & srcfile.path, 64, "Serenity's Search" 
                    TS.close
                    Set TS = srcFile.OpenAsTextStream(2, 0)
                    ts.write newsrc
                    ReportErrors "Writing file"
                End If
            End If
        End If
        ReportErrors "Check OK" & "     " & srcFile.path


Else
        wscript.echo "Too many parameters", 16, "Serenity's ReplaceRegExp"
        ReportErrors "Help"

ReportErrors "All Others"
End If

Sub ReportErrors(strModuleName)
    If err.number<>0 then wscript.echo "An unexpected error occurred. This dialog provides details on the error." & vbCRLF & vbCRLF & "Error Details " & vbCRLF & vbCRLF & "Script Name" & vbTab & Wscript.ScriptFullName & vbCRLF & "Module" & vbtab & vbTab & strModuleName & vbCRLF & "Error Number" & vbTab & err.number & vbCRLF & "Description" & vbTab & err.description, vbCritical + vbOKOnly, "Something unexpected"
    Err.clear
End Sub
票数 0
EN

Stack Overflow用户

发布于 2014-10-11 23:49:05

您可以使用两个本地批处理脚本来修改文件,这两个脚本分别称为repl.batfindrepl.bat,并且它们都可以使用Windows正则表达式。

助手批处理文件findrepl.bat (由aacini提供)-下载地址:https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat

帮助程序批处理文件repl.bat (由dbenham提供)-下载地址:https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

它们具有在grepsed中找到的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26311658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档