Я пишу простой script для замены текста в переменной среды другим текстом. Проблема, которую я получаю, заключается в замене замещенного или замещенного текста на другие переменные
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
ПФС. Я знаю, что это проще в Perl/Python/другом языке script, но я просто хочу знать, почему что-то, что должно быть легко, не сразу становится очевидным.
PPPS. Я также пробовал сценарии с замедленным расширением, явно включенным
SETLOCAL enabledelayedexpansion
Это не имеет значения.