Passer un chemin avec un espace dans un fichier batch en tant que paramètre


6

En first.bat, j'utilise

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

Et dans les scripts \ vc64.bat, j'utilise

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

Mais je reçois: 'C:\Programvcvarsx86_amd64.bat' is not internal or external command.....erreur.

Si le chemin assigné à var5 n'a pas d'espace, alors tout va bien.

J'ai essayé plusieurs combinaisons de citations et %1vcvarsx86_amd64.bat, mais aucun changement.

Comment est-ce que je le fais fonctionne avec le chemin avec les espaces?


Pour être plus précis, supposons que ce soit 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

Mise à jour: Voici un exemple. Changer ab en ab fonctionne.

call.bat dans C: \

@ECHO OFF

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

pause

1.battre dans C: \

@ECHO OFF

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

RMDIR /S C:\NoWorry

Test.bat dans C: \ ab Test.bat dans C: \ ab

@ECHO OFF

RMDIR /S C:\ThereIsNoSuchFolder

Avez-vous essayé d'échapper aux espaces simples avec des barres obliques inverses ( bla\ blub) ou de mettre tout le chemin entre guillemets ( "bla blub")?
feeela

Réponses:


8

Pour transmettre des paramètres avec des espaces, vous devez citer le paramètre, puis supprimer les guillemets à l'aide de %~1.

Donc, le script complet ressemblerait à

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%

Cela me donne1> There should not be Files。
utilisateur565739

Cela fonctionne bien pour moi, il me manquait un setdans la réponse, essayez maintenant.
Bali C

Utiliser "% var5" donne juste des erreurs comme There should not be..... Je ne sais pas pourquoi
user565739

Je veux dire utiliser quote avec% (nom de variable) me donne simplement une erreur et il ne peut pas appeler vc64.bat. Sans les guillemets, il peut appeler vc64.bat, mais le paramètre n'est pas bon.
user565739

Vous devez utiliser "%var5%"avec un %signe de chaque côté.
Bali C
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.