Удаление кавычек из именованных переменных среды в сценариях Windows
Я хочу сохранить префикс URL в переменной среды Windows. Амперсанды в строке запроса делает это хлопотно, хотя.
например: у меня есть префикс URL http://example.com?foo=1&bar=
и хотите создать полный URL, указав значение для
9 ответов:
Это не ограничение переменной окружения, а командной оболочки.
приложить все задание в кавычки:
set "myvar=http://example.com?foo=1&bar="
хотя, если вы попытаетесь повторить это, он будет жаловаться, поскольку оболочка увидит там разрыв.
вы можете повторить его, заключив имя var в кавычки:
echo "%myvar%"
или лучше, просто используйте команду set для просмотра содержимого:
set myvar
это работает
for %a in (%myvar%) do set myvar=%~a
Я бы также использовал это, если бы хотел напечатать переменную, которая содержала и амперсанд без кавычек.
for %a in ("fish & chips") do echo %~a
хотя уже есть несколько хороших ответов, другой способ удалить кавычки-использовать простую подпрограмму:
:unquote set %1=%~2 goto :EOF
вот полный пример использования:
@echo off setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS set words="Two words" call :unquote words %words% echo %words% set quoted="Now is the time" call :unquote unquoted %quoted% echo %unquoted% set word=NoQuoteTest call :unquote word %word% echo %word% goto :EOF :unquote set %1=%~2 goto :EOF
используйте отложенное расширение переменной среды и используйте !ВАР:~1,-1! чтобы удалить кавычки:
@echo off setlocal enabledelayedexpansion set myvar="http://example.com?foo=1&bar=" set myvarWithoutQuotes=!myvar:~1,-1! echo !myvarWithoutQuotes!
чтобы удалить только начальные и конечные кавычки из переменной:
SET myvar=###%myvar%### SET myvar=%myvar:"###=% SET myvar=%myvar:###"=% SET myvar=%myvar:###=%
это предполагает, что у вас нет ###" или "### внутри вашего значения и не работает, если переменная равна NULL.
кредит идет на http://ss64.com/nt/syntax-esc.html для этого метода.
использовать несколько переменных, чтобы сделать это:
set myvar="http://example.com?foo=1&bar=" set bar=true set launch=%testvar:,-1%%bar%" start iexplore %launch%