2014-04-23 2 views

답변

2

이것은 네이티브 스크립팅 도구를 사용하는 강력한 배치 솔루션입니다. 배치 파일 또는있는 폴더에 같은 폴더에 https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

장소 repl.bat :에서 다운로드 -
그것은이 도우미 배치 repl.bat라는 파일을 사용하는 file.xml

type "file.xml"|repl "&" "" L >"newfile.xml" 

의 모든 & 문자를 제거합니다 경로에.

0

이것은 vbs 파일입니다. 정규식을 사용하여 검색하고 바꿉니다. 그것은 라인 기반 butwhole 파일이 아닙니다.

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 
     MsgBox "No parameters", 16, "ReplaceRegExp" 
     ReportErrors "Help" 
ElseIf objArgs.Count = 1 then 
     MsgBox "Only one parameter", 16, "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 
      Msgbox err.description & " " & srcFile.path, 48, "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 
        Msgbox "Found in " & srcfile.path, 64, "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 
      Msgbox err.description & " " & srcFile.path, 48, "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 
        Msgbox "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 
     MsgBox "Too many parameters", 16, "ReplaceRegExp" 
     ReportErrors "Help" 

ReportErrors "All Others" 
End If 

Sub ReportErrors(strModuleName) 
    If err.number<>0 then Msgbox "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 

명령 프롬프트에서. 전체 경로를 지정하고 앰퍼샌드 (검색 문자열)를 이스케이프 처리했습니다.

"C:\path\ReplaceRegExp.vbs" "%userprofile%\Desktop\Folder Property List.txt" "^&" "" 

참고 그것은 시작에 사용하도록 설계되었다 - 실행을. 한 번 실행하면 설치됩니다.

ReplaceRegExp.vbs "%userprofile%\Desktop\Folder Property List.txt" "&" "" 

이것은 docs의 패턴입니다.

설정 정규 표현식의 패턴을 쓰는 데 특수 문자와 시퀀스가 ​​사용됩니다. 다음 표에서는 사용할 수있는 문자 및 시퀀스의 예를 설명하고 제공합니다.

문자 설명
\ 다음 문자를 특수 문자 또는 리터럴로 표시합니다. 예를 들어, "n"은 문자 "n"과 일치합니다. "\ n"은 개행 문자와 일치합니다. 서열 "\"일치 "\"를 "("일치 "(".

^ 입력의 시작과 일치.

$ 입력의 끝과 일치.

  • 일치를 예를 들어, "zo *"는 "zoo"와 일치하지만, "zo *"는 "zoo"와 일치합니다 (예 : "zo *"는 "zoo"와 일치합니다). "z"가 아님.

? 앞의 문자를 0 번 또는 1 번 일치시킵니다. 예를 들어, "아?" "결코"의 "ve"와 일치합니다.

. 개행 문자를 제외한 모든 단일 문자와 일치합니다.

(패턴) 일치하는 패턴과 일치하는 항목을 기억합니다. Matched 하위 문자열은 Item [0] ... [n]을 사용하여 결과로 얻은 Matches 컬렉션에서 검색 할 수 있습니다. 괄호 문자()와 일치 시키려면 "("또는 ")"를 사용하십시오.

x | y x 또는 y와 일치합니다. 예를 들어 "z | wood"는 "z"또는 "wood"와 일치합니다. "(z | w) oo"는 "동물원"또는 "나무"와 일치합니다.

{n} n은 음수가 아닌 정수입니다. 정확히 n 번 일치합니다. 예를 들어 "o {2}"는 "Bob"의 "o"와 일치하지 않지만 "foooood"의 처음 두 개의 o는 일치합니다.

{n}} n은 음수가 아닌 정수입니다. 적어도 n 번 일치합니다. 예를 들어 "o {2,}"는 "Bob"의 "o"와 일치하지 않으며 "foooood"의 모든 o와 일치합니다. "o {1,}"은 "o +"와 같습니다. "o {0,}"은 "o *"와 같습니다.

{n, m} m 및 n은 음이 아닌 정수입니다. 적어도 n 번 이상 m 번 일치합니다. 예를 들어 "o {1,3}"은 "fooooood"의 처음 세 개의 o와 일치합니다. "o {0,1}"은 "o?"와 동일합니다.

[xyz] 문자 집합입니다. 둘러싸인 문자 중 하나와 일치합니다. 예를 들어, "[abc]"는 "plain"의 "a"와 일치합니다.

[^ xyz] 음수 문자 집합입니다. 동봉되지 않은 문자와 일치합니다. 예를 들어 "[^ abc]"는 "plain"의 "p"와 일치합니다.

[a-z] 문자의 범위입니다. 지정된 범위의 모든 문자와 일치합니다. 예를 들어, "[a-z]"는 "a"에서 "z"범위의 소문자 영문자와 일치합니다.

[^ m-z] 음수 범위 문자입니다. 지정된 범위 이외의 문자와 일치합니다. 예를 들어, "[m-z]"는 "m"에서 "z"까지의 범위에없는 문자를 찾습니다.

\ b 단어 경계, 즉 단어와 공백 사이의 위치와 일치합니다. 예를 들어 "er \ b"는 "never"의 "er"과 일치하지만 "verb"의 "er"은 일치하지 않습니다.

\ B 단어가 아닌 경계와 일치합니다. "ea * r \ B"는 "never early"의 "ear"와 일치합니다.

\ d 숫자와 일치합니다. [0-9]와 같습니다.

\ D 비 숫자 문자와 일치합니다. [^ 0-9]와 같습니다.

\ f form-feed 문자와 일치합니다.

\ n 개행 문자와 일치합니다.

\ r 캐리지 리턴 문자와 일치합니다.

\ s "[\ f \ n \ r \ t \ v]"와 같은 공백, 탭, 용지 공급 등의 공백과 일치합니다.

\ S 비백 공백 문자와 일치합니다. "[^ \ f \ n \ r \ t \ v]"와 동일합니다.

\ t 탭 문자와 일치합니다.

\ v 수직 탭 문자와 일치합니다.

\ w 밑줄을 포함한 모든 단어 문자와 일치합니다. "[A-Za-z0-9_]"와 동일합니다.

\ W 단어가 아닌 문자와 일치합니다. "[^ A-Za-z0-9_]"와 동일합니다.

\ num num과 일치합니다. 여기서 num은 양의 정수입니다. 기억 된 일치에 대한 참조. 예를 들어, "(.) \ 1 "은 두 개의 연속 한 동일한 문자와 일치합니다.

\ n n과 일치합니다 .n은 8 진수 이스케이프 값이며 8 진수 이스케이프 값은 1, 2 또는 3 자리 숫자 여야합니다 (예 :"\ 11 "및 "\ 011"는 탭 문자와 일치하며 "\ 0011"은 "\ 001"& "1"과 동일합니다. 8 진수 이스케이프 값은 256을 초과하지 않아야합니다. 정규 표현식에 사용될 코드

\ xn n과 일치하는 16 진수 이스케이프 값 16 진수 이스케이프 값은 정확히 2 자리 길이 여야합니다. 예를 들어 "\ x41"은 "A"와 일치합니다. "\ x041 "은"\ x04 "와 같습니다. &"1 "ASCII 코드를 r에 사용할 수 있습니다 egular 표현.

관련 문제