将带有“&”的路径传递给批处理文件

Passing a Path with '&' to Batch File

我正在尝试将路径从另一个程序传递到批处理文件。另一个程序使用 BASIC 作为脚本语言。

所以,我通过 Shell() 命令调用批处理文件。

在 shell 命令中,我试图传递一个带有符号“&”的路径。但是,当它到达批处理文件时,批处理文件将 & 视为一种转义序列(我认为)。

例如:

路径:C:\Documents\R&D\Files

Shell("runscript.bat "C:\Documents\R&D\Files"")

在批处理文件中:

variable=~1
echo %variable%

我得到以下输出:

C:Documents\R

更新

但是,如果我使用像 C:\Documents\RD\Files

这样的路径

这条路径将通过 find 得到,echo 将打印:

C:\Documents\RD\Files

Windows 允许您使用 ^ 转义字符串中的下一个字符。尝试 R^&D 如下所示:

C:\Users\Thomas>echo R^&D
R&D

我想你想使用不带引号的变量。(用引号括起来不会给你带来任何问题)。然后你需要延迟扩展(并使用 ! 而不是 % 访问变量):

set "variable=%~1"
echo "%variable%"
setlocal enableDelayedExpansion
echo !variable!

这里我假设第一个参数包含 &

另一种选择是for /f

for /f %%a in ("%~1") do echo %%a