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.