通过'&'传递路径批处理文件

时间:2015-01-23 14:29:54

标签: windows batch-file path cmd

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

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

在shell命令中,我试图传入一个带有符号'&'的路径。但是,当它到达批处理文件时,批处理文件会处理&作为一种逃脱序列(我认为)。

例如:

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

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

在批处理文件中:

variable=~1
echo %variable%

我得到以下输出:

  

C:文档\ r

更新

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

这样的路径

此路径将通过查找并且回显将打印:

C:\文件\ RD \文件

2 个答案:

答案 0 :(得分:3)

我想你想要使用没有引号的变量。(将它括在引号中会导致你没有问题。)然后你需要延迟扩展(并使用!代替%来访问变量):

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

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

的东西

另一个选项是for /f

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

答案 1 :(得分:0)

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

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