Je trouve %~dp0
très utile, et je l'utilise beaucoup pour rendre mes fichiers batch plus portables.
Mais l'étiquette elle-même me semble très énigmatique... A quoi sert le ~
? Est-ce que dp
signifie drive et path ? Est-ce que le 0
fait référence à %0
, le chemin du fichier batch qui inclut le nom du fichier ?
Ou c'est juste une étiquette bizarre ?
J'aimerais également savoir s'il s'agit d'une fonctionnalité documentée ou d'un élément susceptible d'être déprécié.
Appel à
for /?
dans la ligne de commande donne de l'aide sur cette syntaxe (qui peut être utilisée en dehors de FOR, aussi, c'est juste l'endroit où l'aide peut être trouvée).
En outre, la substitution des références de variables FOR a été améliorée. Vous pouvez maintenant utiliser la syntaxe facultative suivante syntaxe facultative suivante :
%~I - développe %I en supprimant les guillemets qui l'entourent (") %~fI - étend %I à un nom de chemin entièrement qualifié %~dI - étend %I à une lettre de lecteur uniquement %~pI - remplace %I par un chemin d'accès uniquement %~nI - remplace %I par un nom de fichier uniquement %~xI - remplace %I par une extension de fichier uniquement %~sI - le chemin étendu ne contient que des noms courts %~aI - étend %I aux attributs du fichier. %~tI - étend %I à la date et à l'heure du fichier %~zI - étend %I à la taille du fichier %~$PATH:I - recherche les répertoires listés dans la variable d'environnement PATH et étend %I au nom complet du premier répertoire. nom pleinement qualifié du premier trouvé. Si le nom de la variable d'environnement n'est pas d'environnement n'est pas défini ou que le fichier n'est pas recherche, ce modificateur prend la forme de la chaîne vide chaîne vide
Les modificateurs peuvent être combinés pour obtenir résultats composés :
%~dpI - étend %I à une lettre de lecteur et à un chemin d'accès uniquement. %~nxI - étend %I à un nom de fichier et une extension seulement. %~fsI - étend %I à un nom de chemin complet avec des noms courts uniquement. %~dp$PATH:I - recherche dans les répertoires listés dans la variable d'environnement PATH d'environnement PATH pour %I et l'étend à la lettre de lecteur et au lettre de lecteur et le chemin du premier trouvé. %~ftzaI - développe %I en une ligne de sortie de type DIR.
Dans les exemples ci-dessus, %I et PATH peuvent être remplacés par d'autres valeurs valides. être remplacés par d'autres valeurs valides. La syntaxe %~ se termine par un nom de variable > FOR valide. nom de variable FOR valide. Choisir des noms de variables en majuscules majuscules, comme %I, rend la syntaxe plus plus lisible et évite toute confusion avec les modificateurs, qui ne sont pas sensibles à la sensibles à la casse.
Il y a différentes lettres que vous pouvez utiliser comme f
pour "full path name", d
pour la lettre du lecteur, p
pour le chemin, et elles peuvent être combinées. %~
est le début de chacune de ces séquences et un nombre I
indique que cela fonctionne sur le paramètre %I
(où %0
est le nom complet du fichier batch, comme vous l'avez supposé).
(Tout d'abord, j'aimerais recommander ce site de référence utile pour le lot : http://ss64.com/nt/)
Ensuite, une autre explication utile : http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
La variable %~dp0
La variable %~dp0 (c'est un zéro), lorsqu'elle est référencée dans un fichier batch Windows Windows, elle s'étend à la lettre drive et au path de ce fichier batch. fichier batch.
Les variables %0-%9 font référence aux paramètres de la ligne de commande du fichier de commande du fichier > batch. %1-%9 font référence aux arguments de la ligne de commande après le nom du fichier batch. %0 fait référence au fichier batch lui-même.
Si vous faites suivre le caractère pourcent (%) d'un caractère tilde (~), vous pouvez insérer un ou plusieurs modificateurs avant le numéro du paramètre pour modifier la la façon dont la variable est développée. Le modificateur d développe le lecteur Le modificateur d est remplacé par la lettre du lecteur et le modificateur p par le chemin du paramètre.
Exemple : Disons que vous avez un répertoire sur C : appelé bat_files, et que ce répertoire contient un fichier appelé exemple.bat. dans ce répertoire se trouve un fichier appelé example.bat. Dans ce cas, %~dp0 (en combinant les modificateurs d et p) se développera en C:\bat_files.
Consultez [cet article de Microsoft][1] pour une explication complète.
Consultez également [ce fil de discussion du forum][2].
Et une référence plus claire [ici][3] :
%CmdCmdLine%
renvoie la ligne de commande complète telle qu'elle a été passée à CMD.EXE.
%*
renvoie le reste de la ligne de commande en commençant par le premier argument de la ligne de commande (sous Windows NT 4, %* inclut également tous les espaces de tête).
%~dn
renverra la lettre du lecteur de %n (n peut aller de 0 à 9) si %n est un chemin ou un nom de fichier valide (pas de UNC).
%~pn
renverra le répertoire de %n si %n est un chemin ou un nom de fichier valide (pas de UNC).
%~nn
renverra le nom de fichier seulement de %n si %n est un nom de fichier valide.
%~xn
retournera l'extension de fichier de %n si %n est un nom de fichier valide.
%~fn
renvoie le chemin d'accès complet de %n si %n est un nom de fichier ou un répertoire valide.
Je viens de trouver une bonne référence pour le mystérieux opérateur tilde ~
.
La chaîne %~
est appelée opérateur [tilde pourcent][4]. Vous pouvez le trouver dans des situations comme : %~0
.
La chaîne :~
s'appelle l'opérateur [tilde deux-points][5]. Vous pouvez la trouver dans des situations telles que : %SOME_VAR:~0,-1%
.
%1-%9
font référence aux args de la ligne de commande. S'ils ne sont pas des valeurs de chemin valides, %~dp1
- %~dp9
se développeront tous à la même valeur que %~dp0
. Mais s'ils sont des valeurs de chemin valides, ils se développeront vers leur propre valeur de pilote/chemin.
Par exemple : (batch.bat)
@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on
Exécution 1 :
D:\Workbench>batch arg1 arg2
~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\
Course 2 :
D:\Workbench>batch c:\123\a.exe e:\abc\b.exe
~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\
[1] : http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx [2] : http://www.911cd.net/forums//index.php?showtopic=3730 [3] : http://www.robvanderwoude.com/parameters.php [4] : https://en.wikibooks.org/wiki/Windows_Batch_Scripting#Percent_tilde [5] : http://windowsjoe.blogspot.com/2008/11/mastering-windows-batch-files.html
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
La variable %0
dans un script batch est définie comme le nom du fichier batch en cours d'exécution. La syntaxe spéciale ~dp
entre le %
et le 0
dit essentiellement de développer la variable %0
pour montrer la lettre du lecteur et le chemin, ce qui vous donne le répertoire courant contenant le fichier batch !