Passe um caminho com espaço para um arquivo em lotes como parâmetro

6

No first.bat, eu uso

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

E em scripts \ vc64.bat, eu uso

SET var6=%1vcvarsx86_amd64.bat
CALL %var6%

Mas eu recebo: 'C:\Programvcvarsx86_amd64.bat' is not internal or external command.....erro.

Se o caminho atribuído a var5 não tiver espaço, tudo bem.

Tentei várias combinações de citações e %1vcvarsx86_amd64.bat, mas nenhuma alteração.

Como faço para que ele funcione com caminho com espaços?


Para ser mais preciso, suponha que seja 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

Atualização: Aqui está um exemplo. Altere ab para ab funciona.

call.bat em C: \

@ECHO OFF

SET var5=C:\a b\
CALL C:\1.bat "%var5%"

pause

1.bat em C: \

@ECHO OFF

SET var6=%~1Test.bat
CALL %var6%

RMDIR /S C:\NoWorry

Test.bat em C: \ ab Test.bat em C: \ ab

@ECHO OFF

RMDIR /S C:\ThereIsNoSuchFolder
user565739
fonte
Você tentou escapar dos espaços únicos com barras invertidas ( bla\ blub) ou colocar o caminho inteiro entre aspas ( "bla blub")?
feeela

Respostas:

8

Para passar parâmetros com espaços, é necessário citar o parâmetro e remover as aspas usando %~1.

Portanto, o script completo se pareceria

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%
Bali C
fonte
Isso me dá1> There should not be Files。
user565739
Funciona bem para mim, estava faltando um setna resposta, tente agora.
Bali C
O uso de "% var5" fornece apenas erros como There should not be..... Não sei porque.
precisa saber é o seguinte
Quero dizer, use quote com% (nome da variável) apenas me dá erro e não pode chamar vc64.bat. Sem as aspas, ele pode chamar vc64.bat, mas o parâmetro não é bom.
user565739
Você precisa usar "%var5%"com uma %placa de cada lado.
Bali C