Знаки процента побега в заданных переменных

Мой первый пост, большинство вопросов уже решено с помощью этого дружественного знания здесь. Но теперь у меня заканчиваются идеи, опять же, с вопросом об обработке ядовитых символов в cmd.exe.

Давайте предположим, что есть заданная строковая переменная, заключенная в двойные кавычки. Большинство ядовитых символов уже были заменены обычными символами ранее, левые, мешающие сценарию, это «&», «(», «)» и «%». Строка должна быть отражена в файл без кавычек впоследствии. Так что у меня появилась идея убежать от ядовитых персонажей втрое:

@echo off & setlocal ENABLEEXTENSIONS
SET AlbumArtist=%1
CALL :EscapePoisonChars %AlbumArtist% AlbumArtist_VDN

SET "FlacHyperLink==hyperlink^("file://%AlbumArtist_VDN%"^;"LossLess"^)")
echo %FlacHyperLink%
echo %AlbumArtist_VDN%

endlocal &GOTO:EOF

:EscapePoisonChars
@echo off & setlocal ENABLEEXTENSIONS
SET TmpString=%1
SET TmpString=%TmpString:&=^^^&%
SET TmpString=%TmpString:(=^^^(%
SET TmpString=%TmpString:)=^^^)%
endlocal&SET %2=%TmpString:~1,-1%&GOTO :EOF

Когда я вызываю свой скрипт выше, я получаю ожидаемый результат - кроме отсутствующего знака процента:

G:\YAET\20130204_Work>TryAmper.bat "100% Rock & Roll (7' UpMix)"
=hyperlink("file://100 Rock & Roll (7' UpMix)";"LossLess")
100 Rock & Roll (7' UpMix)

G:\YAET\20130204_Work>

Я знаю, что этот процент можно избежать сам по себе. Так что "%%" обычно приводит к единственному литералу "%". Но мне не удалось найти рабочую процедуру замены для знаков процента, потому что cmd всегда интерпретирует ее как переменную и пытается ее расширить. Это совершенно неверное направление для решения этой проблемы или просто неправильное понимание расширения переменных? Любые намеки приветствуются! Спасибо!

Ура, Мартин

редактировать Удален собственный код, см. Ниже ответ Джеба для чистого решения.

Спасибо за помощь, Мартин

Ответы на вопрос(1)

Ваш ответ на вопрос