使用變量時,我無法讓此批處理文件執行子字符串替換。具體當!!原創!變量被指定;如果它是一個文字字符串,它工作正常。但是,這不會對我的用法。使用變量的批處理文件子字符串替換
setlocal ENABLEDELAYEDEXPANSION
set original=chair
set replacement=table
set str="jump over the chair"
set str=%str:!original!=!replacement!%
您的幫助是非常感謝。
使用變量時,我無法讓此批處理文件執行子字符串替換。具體當!!原創!變量被指定;如果它是一個文字字符串,它工作正常。但是,這不會對我的用法。使用變量的批處理文件子字符串替換
setlocal ENABLEDELAYEDEXPANSION
set original=chair
set replacement=table
set str="jump over the chair"
set str=%str:!original!=!replacement!%
您的幫助是非常感謝。
您已將您的擴展訂單調換。
正常(%)的膨脹發生在分析時(1)
延遲(驚歎號)膨脹發生在運行時(2日)
搜索和替換條款必須在搜索之前進行擴展和替換可以發生。所以,你想:
set str=!str:%original%=%replacement%!
如果使用call
您可以setlocal enabledelayedexpansion
做到這一點,而不需要像這樣:
call set str=%%str:%original%=%replacement%%%
注:這首先被解析到call set str=%str:chair=table%
謝謝,這可能是我的另一個問題。我認爲我的問題是缺乏理解IF語句如何在批處理文件中工作。我把它放在我的IF語句的THEN部分,我相信這就是爲什麼我只有一個變量被評估的結果。此鏈接幫助我:http://stackoverflow.com/questions/4367297/how-to-substitute-variable-contents-in-dos – delpium 2012-08-10 00:19:45