我想在Windows环境变量中存储URL前缀.查询字符串中的&符号使这很麻烦.
例如:我有一个URL前缀,http://example.com?foo=1&bar=
并希望通过提供bar
参数值来创建完整的URL .然后我想使用"start"命令启动该URL.
在SET操作的值周围添加引号很容易:
set myvar="http://example.com?foo=1&bar="
Windows虽然包含实际值中的引号(感谢Windows!):
echo %myvar% "http://example.com?foo=1&bar=true"
我知道我可以使用代字号从批处理文件参数中删除引号:
echo %~1
但是,我似乎无法对命名变量这样做:
echo %~myvar% %~myvar%
完成此操作的语法是什么?
echo%myvar:"=%
这不是环境变量的限制,而是命令shell.
将整个作业括在引号中:
set "myvar=http://example.com?foo=1&bar="
虽然如果你试图回应这个,它会抱怨因为shell会在那里看到一个突破.
您可以通过将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