将带有“&”的路径传递给批处理文件
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
我正在尝试将路径从另一个程序传递到批处理文件。另一个程序使用 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