Я пишу простой сценарий для замены текста в переменной среды другим текстом. Проблема, которую я получаю, заключается в том, что замещенный или замещенный текст извлекается из других переменных
SET a=The fat cat
ECHO %a%
REM Results in 'The fat cat'
ECHO %a:fat=thin%
REM Results in 'The thin cat'
Работает нормально (вывод - «Толстый кот» и «Худой кот»
Однако, если «толстый» или «тонкий» находятся в переменные, это не работает
SET b=fat
ECHO %a:%c%=thin%
REM _Should_ give 'The thin cat'.
REM _Actually_ gives '%a:fat=thin%' (the %c% is evaluated, but no further).
REM using delayed evaluation doesn't make any difference either
ECHO !a:%c%=thin!
REM Actual output is now '!a:fat=thin!'
Я знаю, что это можно сделать, поскольку раньше видел это в блогах, но я никогда не сохранял ссылку на блоги.
У кого-нибудь есть идеи?
PS. Я запускаю скрипты на Windows 7
PPS. Я знаю, что это проще в Perl / Python / другом выбранном языке сценариев, но я просто хочу знать, почему то, что должно быть простым, не сразу становится очевидным.
PPPS. Я также пробовал скрипты с явно включенной функцией отложенного раскрытия
SETLOCAL enabledelayedexpansion
Это не имеет значения.