如何在批处理文件函数参数中转义“&”符号?

3
这是关于问题如何在批处理文件中转义和号的延续。

这个问题提供了一些在批处理文件中使用和号的方法。然而,似乎这些方法都不能用于函数参数。例如:

@echo off
setlocal EnableDelayedExpansion

call:myFunction "http://www.google.com/search?client=opera&q=escape+ampersand"

goto:eof

:myFunction
echo Param is: %~1
goto:eof

我总是会遇到

Param is: http://www.google.com/search?client=opera
'q' is not recognized as an internal or external command,
operable program or batch file.

我尝试使用^进行转义,但似乎也不起作用。有解决方法吗?
如果有影响的话,我的实际用例是向在批处理函数中调用的wget提供下载URL。

我也遇到了同样的问题,现在将应用你的解决方案并查看结果。 - Haris ur Rehman
@MichaelFreidgeim 这个问题的开头不是已经解释了这不是一个重复的问题吗?那里的任何答案都不能单独工作 - 需要的是函数内部的引号,而不仅仅是原始调用中的引号。 - eis
抱歉,没有仔细阅读问题。 - Michael Freidgeim
2个回答

2
感觉有点傻...
@echo off
setlocal EnableDelayedExpansion

call:myFunction "http://www.google.com/search?client=opera&q=escape+ampersand"

goto:eof

:myFunction
echo Parameter is: "%~1"
goto:eof

结果:

Parameter is: "http://www.google.com/search?client=opera&q=escape+ampersand"

1
你改了什么? - SketchBookGames
1
@SketchBookGames 给我的 "Param is" 输出加了引号。 - eis
如果您不想打印双引号呢? - Minix

1

^& 是正确的转义方式,但在双引号中通常不需要。

来源:转义字符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接