Disons que j'éxecute la commande suivante dans l'invite de commande CMD :
SET "FOO=bar"
Y a-t-il un moyen de définir cette variable, autre que de redémarrer l'invite de commande CMD ?
Disons que j'éxecute la commande suivante dans l'invite de commande CMD :
SET "FOO=bar"
Y a-t-il un moyen de définir cette variable, autre que de redémarrer l'invite de commande CMD ?
Les espaces sont significatifs dans la commande set
. Si vous essayez set FOO = bar
puis essayez set FOO=
, cela ne désactivera pas 'FOO '. Pour une raison inconnue, cependant, ils ne sont pas aussi significatifs à l'intérieur de % %
.
L'espace final est également important. Désolé pour la modification, je pensais que votre rep disait 270, pas 270k... oups. Je modifie souvent les réponses lorsque le rep suggère que l'utilisateur ne reviendra pas. Visiblement, ce n'est pas le cas ici. Mon erreur.
Je proposerais ce qui suit uniquement comme un commentaire, mais je pense que c'est suffisamment important pour être mis en valeur.
Beaucoup des réponses précédentes ont mentionné qu'il faut se méfier des espaces de fin; et c'est certainement vrai. Cependant, j'ai trouvé que parfois les espaces de fin veulent simplement être là peu importe quoi - particulièrement si vous utilisez une seule ligne de commande et avez besoin de l'espace comme séparateur de commande.
Voici la solution à ce problème:
SET FOO=Bar
echo %FOO%
:: affiche Bar
SET "FOO="
echo %FOO%
:: affiche %FOO%
En enveloppant la déclaration de cette façon avec des guillemets, le problème d'espacement peut être complètement évité. Cela peut également être vraiment utile lorsque des variables sont créées en les concaténant pour éliminer les espaces entre elles - par exemple - des chemins, par exemple:
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: affiche "C:\Users\ Daniel"
:: Remarquez l'espace indésirable là
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.
10 votes
Voulez-vous dire vraiment MS-DOS (qui est mort depuis au moins une dizaine d'années) - ou est-ce que vous dites MS-DOS mais vous voulez vraiment dire l'invite de commande de Windows (
cmd.exe
) ??5 votes
Probable, mais cela n'a pas vraiment d'importance pour cette question...
4 votes
Marc a raison. Ce n'est pas l'invite de commande MS-DOS. Les gens ne comprennent jamais que c'est une grande différence.
0 votes
@MadaraUchiha, En effet, votre réponse
set var=
fonctionne sous MS-DOS 6.22 command.com de la même manière que sous Windows cmd.exe. (Cependant, contrairement à Windows, mettre des guillemets autour de la var= ne fonctionne pas, cela crée plutôt une variable d'environnement dont le nom commence par des guillemets doubles.)