我們可以使用下面的命令字符串替換在批處理文件
set str="jump over the chair"
set str=%str:chair=table%
這些線條做工精細替換一個批處理文件字符串和更改爲「跳在桌子上」串「在椅子上跳」。現在我想用一些變量替換字符串中的「椅子」一詞,我不知道該怎麼做。
set word=table
set str="jump over the chair"
??
任何想法?
我們可以使用下面的命令字符串替換在批處理文件
set str="jump over the chair"
set str=%str:chair=table%
這些線條做工精細替換一個批處理文件字符串和更改爲「跳在桌子上」串「在椅子上跳」。現在我想用一些變量替換字符串中的「椅子」一詞,我不知道該怎麼做。
set word=table
set str="jump over the chair"
??
任何想法?
您可以使用!,但您必須擁有ENABLEDELAYEDEXPANSION開關組。
setlocal ENABLEDELAYEDEXPANSION
set word=table
set str="jump over the chair"
set str=%str:chair=!word!%
您可以使用下面的小竅門:
set word=table
set str="jump over the chair"
call set str=%%str:chair=%word%%%
echo %str%
的call
有原因的變量擴展另一層,因此有必要引用原%
跡象,但一切最終的作品出來。
我喜歡這個解決方案,在批處理文件中轉義字符串總是有問題,ENABLEDELAYEDEXPANSION只是增加了另一個字符而引起擔心。 – Anders 2010-05-05 19:43:20
關於由喬伊提供的答案的重要事項**。您需要將代碼放入批處理文件才能正常工作。 如果您只是在命令行中測試它,它將返回意外的「%」跳過「word %%%」。 請注意,批處理文件和命令行中的代碼可能會產生不同的結果。 – dadhi 2014-04-23 05:42:41
建立在dadhi的即時評論上,命令行的解決方案在這裏:https://stackoverflow.com/questions/29944902/how-to-replace-with-percent-character-in-cmd-exe。 – 2017-06-16 18:46:03
C:> replace.bat 「123def789」, 「DEF」, 「456」
replace.bat
setlocal enabledelayedexpansion
set data=%1
set search=%2
set replace=%3
set "data=!data:%search%=%replace%!"
echo %data%
REM Use %data% here before calling endlocal.
endlocal
的[如何更換使用命令行參數一個bat文件內字符串
這是幹什麼用的?未來的訪問者可能根本不理解這些代碼。 – SteveFest 2017-07-07 05:29:48
這裏我想提一提你需要在endlocal之前使用變量數據。 – 2017-07-11 04:32:14
可能重複字符串](http://stackoverflow.com/questions/5816178/how-to-replace-string-inside-a-bat-file-with-command-line-parameter-string)它有更多的非正式答案(它有與這裏的答案相同的解決方案雖然) – Fr0sT 2015-03-18 07:25:02
現在誰是誰並不重要,但很好鏈接相同的問題並指向最無法理解的答案 – Fr0sT 2015-03-25 12:26:03