En analysant la ligne de commande, le programme TCC analyse la ligne de commande, il recherche le séparateur de commandes, les commandes conditionnelles (|| et &&), les espaces blancs (espaces, tabulations et virgules), les signes de pourcentage % qui indiquent des variables ou des paramètres de fichiers batch à développer, ainsi que les caractères de redirection et d'acheminement >, < et |.
Normalement, ces caractères spéciaux ne peuvent pas être transmis à une commande en tant que paramètre. Toutefois, vous pouvez inclure n'importe lequel de ces caractères spéciaux dans un paramètre en le plaçant entre guillemets simples [`] ou entre guillemets doubles ["]. Bien que les guillemets inversés et les guillemets doubles vous permettent de créer des paramètres contenant des caractères spéciaux, ils ne fonctionnent pas de la même manière.
Aucun alias ou expansion de variable n'est effectué sur un paramètre entre guillemets. Les symboles de redirection à l'intérieur des guillemets inversés sont ignorés. Les guillemets inversés sont supprimés de la ligne de commande avant l'exécution de la commande.
Aucune expansion d'alias n'est effectuée lorsqu'une expression est placée entre guillemets doubles. Les symboles de redirection à l'intérieur des guillemets doubles sont ignorés. Cependant, l'expansion des variables est effectuée dans les expressions entre guillemets doubles. Les guillemets doubles eux-mêmes seront transmis à la commande en tant que paramètre.
Par exemple, supposons que vous ayez un fichier batch CHKNAME.BTM qui attend un nom comme premier paramètre (%1). Normalement, le nom est composé d'un seul mot. Si vous devez transmettre un nom de deux mots avec un espace à ce fichier batch, vous pouvez utiliser la commande :
chkname `MY NAME`
Dans le fichier batch, %1 aura la valeur MY NAME y compris l'espace. Les guillemets inversés ont provoqué TCC de transmettre la chaîne de caractères au fichier batch en tant que paramètre unique. Les guillemets maintiennent les caractères ensemble et réduisent le nombre de paramètres dans la ligne.
Pour un exemple plus complexe, supposons que le fichier batch QUOTES.BAT contienne les commandes suivantes :
@echo off
echo Arg1 = %1
echo Arg2 = %2
echo Arg3 = %3
et que la variable d'environnement FORVAR a été définie avec cette commande :
set FORVAR=for
Maintenant, si vous entrez la commande
quotes `Now is the time %forvar` all good
La sortie de QUOTES.BAT ressemblera à ceci :
Arg1 = Now is the time %forvar
Arg2 = all
Arg3 = good
Mais si vous entrez la commande :
quotes "Now is the time %forvar" all good
Lasortie deQUOTES.BAT ressemblera à ceci :
Arg1 = "Now is the time for"
Arg2 = all
Arg3 = good
Notez que dans les deux cas, les guillemets maintiennent les caractères ensemble et réduisent le nombre de paramètres dans la ligne.
L'exemple suivant comporte 7 paramètres de ligne de commande, alors que les exemples ci-dessus n'en comportent que 3 :
quotes Now is the time %%forvar all good
(Les doubles signes de pourcentage sont nécessaires dans chaque cas parce que le paramètre est analysé deux fois, une fois lorsqu'il est transmis au fichier batch et une autre fois dans la commande ECHO).
Lorsqu'un alias est défini dans un fichier batch ou à partir de la ligne de commande, son paramètre peut être placé entre guillemets pour empêcher l'expansion des paramètres remplaçables, des variables et des commandes multiples jusqu'à ce que l'alias soit invoqué. Voir ALIAS pour plus de détails.
Vous pouvez désactiver et réactiver les guillemets inversés et les doubles guillemets avec la commande SETDOS /X.