Escape percent signs in given variables

Nice question!
At first, yes you can replace even percent signs, but not within a percent expansion, you need a delayed expansion here.

Setlocal EnableDelayedExpansion
set tmpstr=!tmpstr:%=%%!

But if you use the delayed expansion, you don’t need the escapes anymore, as the delayed expansion is the last phase of the batch parser and all characters lose any special meaning.
You only need to echo with delayed expansion.

Echo !tmpvar!

EDIT: Clean solution

@echo off
setlocal DisableDelayedExpansion

REM * More or less secure getting the parameter
SET "AlbumArtist=%~1"

setlocal EnableDelayedExpansion
SET "FlacHyperLink==hyperlink("file://!AlbumArtist!";"LossLess")"

echo !FlacHyperLink!
echo !FlacHyperLink!> hugo.txt

You need disableDelayedExpansion first, to get even exclamation marks from %1.
After that, you should switch to delayed expansion and use it anywhere.

Leave a Comment