La variable magique %
n contient les arguments utilisés pour appeler le fichier: %0
est le chemin d'accès au fichier bat lui-même, %1
est le premier argument après, %2
est le deuxième et ainsi de suite.
Étant donné que les arguments sont souvent des chemins de fichier, il existe une syntaxe supplémentaire pour extraire des parties du chemin. ~d
est le lecteur, ~p
est le chemin (sans lecteur), ~n
est le nom du fichier. Ils peuvent être combinés de même que ~dp
lecteur + chemin.
%~dp0
est donc assez utile dans une batte: c'est le dossier dans lequel se trouve le fichier de batte en cours d'exécution.
Vous pouvez également obtenir d'autres types de méta-informations sur le fichier: ~t
c'est l'horodatage, ~z
c'est la taille.
Recherchez ici une référence pour toutes les commandes de ligne de commande. Les codes tilde-magic sont décrits sous pour .
echo %~dp0
ne fonctionnera pas en ligne de commande, uniquement dans un fichier de commandes. Duh!%~d0
et%~d0%
?echo %~pd0
donne la même sortie que l'écho%~dp0
(au lieu de l'inverse comme prévu). En outre, la valeur de%0
est différente selon que vous double-cliquez sur le fichier de commandes ou que vous l'exécutez à partir de cmd.Ce sont des substitutions variables améliorées. Ils modifient les variables% N utilisées dans les fichiers batch. Très utile si vous êtes dans la programmation par lots sous Windows.
Vous pouvez trouver ce qui précède en exécutant
FOR /?
.la source
Oui, vous pouvez utiliser d'autres raccourcis ci-dessous. Dans votre commande, ~ d0 signifierait la lettre de lecteur du 0ème argument.
Le 0ème argument étant le chemin du script, il obtient pour vous la lettre de lecteur du chemin. Vous pouvez également utiliser les raccourcis suivants.
Cela peut également être trouvé directement dans l'invite de commande lorsque vous exécutez CALL /? ou pour /?
la source
De l' analyse de nom de fichier dans un fichier batch et d'autres idiomes - Real's How-to :
Le chemin (sans lecteur) où se trouve le script: ~ p0
Le lecteur où se trouve le script: ~ d0
la source
%~s0
le nom complet du script.Une autre astuce qui aiderait beaucoup est que pour définir le répertoire actuel sur un lecteur différent, il faudrait d'
%~d0
abord utilisercd %~dp0
. Cela va changer le répertoire sur le lecteur du fichier batch, puis changer dans son dossier.Pour #oneLinerLovers,
cd /d %~dp0
changera à la fois le lecteur et le répertoire :)J'espère que cela aide quelqu'un.
la source
pushd %~dp0
, qui n'a aucun problème à changer le lecteur actuel, et vous donne l'avantage supplémentaire de pouvoirpopd
revenir au lecteur / chemin d'origine plus tard.%~d0
vous donne la lettre de lecteur de l'argument 0 (le nom du script),%~p0
le chemin.la source
Quelques pièges à surveiller:
Si vous double-cliquez sur le fichier batch
%0
sera entouré de guillemets. Par exemple, si vous enregistrez ce fichier sousc:\test.bat
:Double-cliquez dessus pour ouvrir une nouvelle invite de commande avec sortie:
Mais si vous ouvrez d'abord une invite de commande et l'appelez directement à partir de cette invite de commande,
%0
vous vous référez à tout ce que vous avez tapé . Si vous tapeztest.bat
Enter, la sortie de%0
n'aura pas de guillemets car vous n'avez tapé aucun guillemet:Si vous tapez
test
Enter, la sortie de%0
n'aura pas d'extension non plus, car vous n'avez tapé aucune extension:Pareil pour
tEsT
Enter:Si vous tapez
"test"
Enter, la sortie de%0
aura des guillemets (puisque vous les avez tapés) mais pas d'extension:Enfin, si vous tapez
"C:\test.bat"
, la sortie serait exactement comme si vous aviez double-cliqué dessus:Notez que ce ne sont pas toutes les valeurs
%0
possibles car vous pouvez appeler le script à partir d'autres dossiers:Tous les exemples ci-dessus affecteront également
%~0
, car la sortie de%~0
est simplement la sortie des%0
guillemets négatifs (le cas échéant).la source
Ce code explique l'utilisation du caractère ~ tilda, ce qui était la chose la plus déroutante pour moi. Une fois que j'ai compris cela, cela rend les choses beaucoup plus faciles à comprendre:
la source
Il affiche l'emplacement actuel du fichier ou du répertoire dans lequel vous vous trouvez actuellement. Par exemple; si votre fichier de commandes était dans le répertoire du bureau, alors "% ~ dp0" afficherait le répertoire du bureau. si vous voulez qu'il affiche le répertoire courant avec le nom de fichier actuel, vous pouvez taper "% ~ dp0% ~ n0% ~ x0".
la source