dos - Passing exclamation marks as parameters in batch subroutine call -


thanks community have learned how escape exlamation marks immediate use in batch delayedexpansion block. (use 2 escape carets not one, awesome)

but can't seem find or figure out how pass contents of variable containing exclamation mark parameter batch subroutine.

example:

@echo off setlocal enabledelayedexpansion set variable=hello^^! echo "!variable!" call :subroutine "!variable:^^!=^^!!" pause exit  :subroutine echo "%~1" exit/b 

output:

"hello!" "hello" press key continue . . . 

i want second "hello" include exclamation mark. have tried various permutations of substring replacement on line 5 no avail.

help

you need different way variable replacing, , more carets.

@echo off setlocal enabledelayedexpansion set variable=hello^^! echo "!variable!" call :subroutine %variable:!=^^^^^^^^^^!% exit /b  :subroutine echo %~1 exit /b 

or quotes: call :subroutine "%variable:!=^^^!%"

in function need expand %1 without quotes, number of carets odd in call parameter.

but @ it's bad idea try such things.
agree aacini, should use pass reference instead.
way handle any possible content.

@echo off setlocal enabledelayedexpansion set variable=hello^^! echo "!variable!" call :subroutine variable exit /b  :subroutine echo !%1! exit /b 

Comments

Popular posts from this blog

database - VFP Grid + SQL server 2008 - grid not showing correctly -

jquery - Set jPicker field to empty value -

.htaccess - htaccess convert request to clean url and add slash at the end of the url -