5

В first.bat, я использую

var5=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\
CALL scripts\vc64.bat %var5%

И в скриптах \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 works.

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 Test.bat в C:\ab

@ECHO OFF

RMDIR /S C:\ThereIsNoSuchFolder

1 ответ1

7

Чтобы передать параметры с пробелами, необходимо заключить параметр в кавычки, затем вы можете удалить кавычки, используя %~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%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .