Побег от амперсанда в пакетных переменных

Я пытаюсь собрать сложный пакетный скрипт, который делает несколько вещей одновременно. Я зацикливаюсь на одной его части. Я хочу, чтобы скрипт запрашивал номер клиента, а затем помещал этот номер в определенное место в URL-адресе. Проблема в том, что в URL-адресе есть амперсанд, и когда я повторяю содержимое переменной, выдается ошибка.

@echo off
set /p id="Enter ID: "
set URL=https://firsturlsectionhere.com
set FULLURL=%URL%id%^&therestofurl
@echo %FULLURL%

Любая помощь, которую вы, ребята, могли бы оказать, была бы отличной.


person James H.    schedule 29.09.2016    source источник


Ответы (1)


Если вы установите свою переменную с кавычками, вам не нужно экранировать амперсанд. Но поскольку у вас есть амперсанд, вам нужно повторить переменную с отложенным расширением.

 @echo off
 set /p id="Enter ID: "
 set URL=https://firsturlsectionhere.com
 set "FULLURL=%URL%/%id%&therestofurl"
 setlocal enabledelayedexpansion
 echo !FULLURL!
 endlocal
 pause

Если вы сохраните escape-символ в переменной, а кавычки окружат вашу команду set, вы можете повторить переменную как есть.

 @echo off
 set /p id="Enter ID: "
 set URL=https://firsturlsectionhere.com
 set "FULLURL=%URL%/%id%^&therestofurl"
 echo %FULLURL%
 pause
person Squashman    schedule 29.09.2016