在 first.bat 中,我使用
var5=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\
CALL scripts\vc64.bat %var5%
在 scripts\vc64.bat 中,我使用
SET var6=%1vcvarsx86_amd64.bat
CALL %var6%
但我得到了:'C:\Programvcvarsx86_amd64.bat' is not internal or external command.....
错误。
如果分配给var5的路径没有空格,那就没问题。
我尝试了引号和的几种组合%1vcvarsx86_amd64.bat
,但没有变化。
我如何使其与带有空格的路径一起工作?
更准确地说,假设它是 C:\abc\
In first.bat:
SET var6=C:\a b c\ =====> '"C:\avcvarsx86_amd64.bat"' is not.....`
SET var6="C:\a b c\" ====> There should not be a b
SET var6=C:\a\ b\ c\ ====> Can't find the specified path
SET var6=C:\a b c\ + Using "%var6" ====> There should not be a b
更新:这是一个例子。将 ab 改为 ab 即可。
call.bat 在 C:\
@ECHO OFF
SET var5=C:\a b\
CALL C:\1.bat "%var5%"
pause
1.bat 在 C:\
@ECHO OFF
SET var6=%~1Test.bat
CALL %var6%
RMDIR /S C:\NoWorry
Test.bat 在 C:\ab C:\ab 中的 Test.bat
@ECHO OFF
RMDIR /S C:\ThereIsNoSuchFolder
答案1
要传递带有空格的参数,您需要用引号括住参数,然后可以使用 删除引号%~1
。
因此完整的脚本如下所示
SET var5=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\
CALL scripts\vc64.bat "%var5%"
SET var6=%~1vcvarsx86_amd64.bat
CALL %var6%