我正在尝试将路径传递给另一个程序的批处理文件。另一个程序使用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 \文件
答案 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