현재 XML 파일 내의 모든 앰퍼샌드를 제거하려고합니다. 그러나, 나는 창 배치 파일을 쓰는 것에 새로운이기 때문에 이것을 달성하기에있는 약간 어려움이 있고있다.xml 파일에서 앰퍼샌드를 제거하는 Windows 배치 파일
누구든지이 문제를 저에게 맡길 수 있다면 크게 감사하겠습니다.
친절 도와서
현재 XML 파일 내의 모든 앰퍼샌드를 제거하려고합니다. 그러나, 나는 창 배치 파일을 쓰는 것에 새로운이기 때문에 이것을 달성하기에있는 약간 어려움이 있고있다.xml 파일에서 앰퍼샌드를 제거하는 Windows 배치 파일
누구든지이 문제를 저에게 맡길 수 있다면 크게 감사하겠습니다.
친절 도와서
이것은 네이티브 스크립팅 도구를 사용하는 강력한 배치 솔루션입니다. 배치 파일 또는있는 폴더에 같은 폴더에 https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
장소 repl.bat
:에서 다운로드 -
그것은이 도우미 배치 repl.bat
라는 파일을 사용하는 file.xml
type "file.xml"|repl "&" "" L >"newfile.xml"
의 모든 &
문자를 제거합니다 경로에.
이것은 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 표현.