1
我們可以跳過/逃脫等於在字符串替換等號(=)? 我米期待輸出作爲「ABCDE」但它打印「A = B」如何跳過一個特殊字符(=)的字符串替換Windows命令
set string=a=b
set string=%string:{a=b}=abcde%
echo %string%
任何建議?
我們可以跳過/逃脫等於在字符串替換等號(=)? 我米期待輸出作爲「ABCDE」但它打印「A = B」如何跳過一個特殊字符(=)的字符串替換Windows命令
set string=a=b
set string=%string:{a=b}=abcde%
echo %string%
任何建議?
這裏有一個笨拙的方法:
@echo off
:: the string that contains equals
set "stringWithEquals===blah==blah==blah="
::the string you want to replace with
set replace_with=X1
echo %stringWithEquals%
call :eqrepl "%stringWithEquals%" %replace_with% res
::the result
echo %res%
goto :eof
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: here are the functions you need
::
:eqrepl String Replacer [RtnVar]
setlocal
rem the result of the operation will be stored here
set "result=#%~1#"
set "replacer=%~2"
call :strlen0 result wl
call :strlen0 replacer rl
:start
set "part1="
set "part2="
rem splitting the string on two parts
for /f "tokens=1* delims==" %%w in ("%result%") do (
set "part1=%%w"
set "part2=%%x"
)
rem calculating the count replace strings we should use
call :strlen0 part1 p1l
call :strlen0 part2 p2l
set /a iteration_end=wl-p1l-p2l
rem creating a sequence with replaced strings
setlocal enableDelayedExpansion
set "sequence="
for /l %%i in (1,1,%iteration_end%) do (
set sequence=!sequence!%replacer%
)
endlocal & set "sequence=%sequence%"
rem adjust the string length
set /a wl=wl+iteration_end*(rl-1)
rem replacing for the current iteration
set result=%part1%%sequence%%part2%
rem if the second part is empty the task is over
if "%part2%" equ "" (
set result=%result:~1,-1%
goto :endloop
)
goto :start
:endloop
endlocal & if "%~3" neq "" (set %~3=%result%) else echo %result%
exit /b
:strlen0 StrVar [RtnVar]
setlocal EnableDelayedExpansion
set "s=#!%~1!"
set "len=0"
for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!s:~%%N,1!" neq "" (
set /a "len+=%%N"
set "s=!s:~%%N!"
)
)
endlocal&if "%~2" neq "" (set %~2=%len%) else echo %len%
exit /b
的'='分開的子字符串替換語法替換字符串搜索字符串,所以你不能使用它;您可以通過編寫自己的批處理腳本或通過借用其他語言(如PowerShell,JavaScript,VBScript)來執行替換... – aschipfl
[批處理文件:如何搜索並替換內部具有「=」的字符串](http://stackoverflow.com/questions/37724410/batch-file-how-to-search-and-replace-a-string-that-have-an-inside) – aschipfl