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

Мой первый пост, большинство вопросов уже решено с помощью этого дружественного знания здесь. Но теперь у меня заканчиваются идеи, опять же, с вопросом об обработке ядовитых символов в 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 всегда интерпретирует ее как переменную и пытается ее расширить. Это совершенно неверное направление для решения этой проблемы или просто неправильное понимание расширения переменных? Любые намеки приветствуются! Спасибо!

Ура, Мартин

редактировать Убрал собственный код, смотрите ниже Jeb 'Ответ за чистый раствор.

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

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

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