54 votes

Supprimer les guillemets des variables d'environnement nommées dans les scripts Windows

Je souhaite stocker un préfixe d'URL dans une variable d'environnement Windows. Les esperluettes dans la chaîne de requête rendent la chose difficile.

Par exemple : J'ai un préfixe d'URL de http://example.com?foo=1&bar= et que vous souhaitez créer une URL complète en fournissant une valeur pour l'attribut bar paramètre. Je souhaite ensuite lancer cette URL à l'aide de la commande "start".

Il est assez facile d'ajouter des guillemets autour de la valeur de l'opération SET :

set myvar="http://example.com?foo=1&bar="

Windows inclut les guillemets dans la valeur réelle (merci Windows !):

echo %myvar%
"http://example.com?foo=1&bar=true"

Je sais que je peux supprimer les guillemets des arguments des fichiers batch en utilisant le tilde :

echo %~1

Cependant, je n'arrive pas à le faire pour les variables nommées :

echo %~myvar%
%~myvar%

Quelle est la syntaxe pour y parvenir ?

2voto

Utilisez l'expansion retardée de la variable d'environnement et utilisez !var:~1,-1 ! pour supprimer les guillemets :

@echo off
setlocal enabledelayedexpansion
set myvar="http://example.com?foo=1&bar="
set myvarWithoutQuotes=!myvar:~1,-1!
echo !myvarWithoutQuotes!

1voto

CmdCrazy Points 11

Utilisez plusieurs variables pour ce faire :

set myvar="http://example.com?foo=1&bar="

set bar=true

set launch=%testvar:,-1%%bar%"

start iexplore %launch%

0voto

Amr Ali Points 1295
@echo off
set "myvar=http://example.com?foo=1&bar="
setlocal EnableDelayedExpansion
echo !myvar!

Cela est dû au fait que la variable contient des caractères spéciaux de l'interpréteur de commandes.

-1voto

Wimmel Points 7641

Je pense que cela devrait suffire :

for /f "tokens=*" %i in (%myvar%) do set %myvar%=%~i

Mais vous n'en avez pas besoin,

set myvar="http://example.com?foo=1&bar="
start "" %myvar%

Cela fonctionnera également, il suffit de fournir un titre à la commande de démarrage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X