2012-08-09 2 views
7

변수를 사용할 때이 배치 파일이 부분 문자열 대체를 수행하는 데 문제가 있습니다. 특히! 원래! 변수가 지정됩니다. 리터럴 문자열이라면 제대로 작동합니다. 그러나 이것은 내 용도로는 사용되지 않습니다.변수를 사용하여 배치 파일 substring 바꾸기

setlocal ENABLEDELAYEDEXPANSION 
set original=chair 
set replacement=table 
set str="jump over the chair" 
set str=%str:!original!=!replacement!% 

귀하의 도움에 크게 감사드립니다.

답변

3

확장 주문을 취소했습니다.

정상 (퍼센트) 확장 구문 분석 시간 (1)에서 발생
지연 (느낌표) 확장 (2)

검색 및 조항을 대체 런타임에 발생하는 검색하기 전에 확장과 장소를 취할 수 있습니다 교체해야 . 그래서 당신이 원하는 : 당신이 사용하는 경우

set str=!str:%original%=%replacement%! 
+0

덕분에 구문 분석됩니다, 그것은 나의 또 다른 문제일지도 모릅니다. 제 문제는 IF 문이 배치 파일에서 어떻게 작동하는지 이해하지 못했다고 생각합니다. 저는 이것을 IF 문에있는 THEN 섹션에 넣었습니다. 그래서 나는 단 하나의 변수 만 평가 한 결과를 얻었습니다. 이 링크는 나를 도왔습니다 : http://stackoverflow.com/questions/4367297/how-to-substitute-variable-contents-in-dos – delpium

12

call 당신과 같이, setlocal enabledelayedexpansion 필요없이이 작업을 수행 할 수 있습니다

call set str=%%str:%original%=%replacement%%%

참고 :이 첫 번째 call set str=%str:chair=table%

관련 문제