Passa um caminho com espaço para um arquivo de lote como parâmetro

5

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 recebo: 'C:\Programvcvarsx86_amd64.bat' is not internal or external command..... error.

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

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

Como faço para trabalhar com caminhos com espaços?

Para ser mais preciso, suponha que seja C: \ a b c \

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. Mude a b para ab obras.

call.bat em C: \

@ECHO OFF

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

pause

1.bat em C: \

@ECHO OFF

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

RMDIR /S C:\NoWorry

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

@ECHO OFF

RMDIR /S C:\ThereIsNoSuchFolder
    
por user565739 21.01.2013 / 12:41

1 resposta

7

Para passar parâmetros com espaços que você precisa para citar o parâmetro, você pode remover as aspas usando %~1 .

Assim, o script completo seria parecido com

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%
    
por 21.01.2013 / 12:51