1135 votes

Comment ça marche ?

- Je trouver de l' %~dp0 très utile, et je l'utilise beaucoup pour faire mon lot des fichiers de plus de portable.

Mais l'étiquette elle-même semble très énigmatiques pour moi... qu'est-ce que l' ~ ? n' dp moyenne de lecteur et le chemin d'accès? l' 0 reportez-vous à l' %0, le chemin d'accès au fichier de commandes qui comprend le nom du fichier?

Ou est-ce juste un drôle d'étiquette?

Je voudrais aussi savoir si c'est une fonctionnalité documentée, ou quelque chose sujette à être obsolète.

881voto

schnaader Points 26212

L'appel

for /?

dans la ligne de commande donne de l'aide sur la syntaxe.

En outre, la substitution de POUR les références à des variables a été amélioré. Vous pouvez maintenant utiliser les options suivantes syntaxe:

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file
%~$PATH:I   - searches the directories listed in the PATH
               environment variable and expands %I to the
               fully qualified name of the first one found.
               If the environment variable name is not
               defined or the file is not found by the
               search, then this modifier expands to the
               empty string

Les modificateurs peuvent être combinés pour obtenir composé résultats:

%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only
%~dp$PATH:I - searches the directories listed in the PATH
               environment variable for %I and expands to the
               drive letter and path of the first one found.
%~ftzaI     - expands %I to a DIR like output line

Dans les exemples ci-dessus %I et le CHEMIN d'accès peut être remplacé par d'autres valeurs valides. La syntaxe %~ se termine par un valide POUR le nom de variable. La cueillette des majuscules les noms de variables comme le %je le rend plus lisible et permet d'éviter la confusion avec le modificateurs, qui ne sont pas des cas sensibles.

Il existe différentes lettres que vous pouvez utiliser comme f pour le "nom de chemin complet", d de lettre de lecteur, p pour le chemin, et ils peuvent être combinés. %~ c'est le début pour chacune de ces séquences et un certain nombre I indique qu'il travaille sur le paramètre %I (où %0 est le nom complet du fichier de commandes, tout comme vous le présume).

407voto

smwikipedia Points 5491

Juste une autre explication utile: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/

L' %~dp0 Variable

L' %~dp0 (c'est un zéro) de la variable si elle est référencée au sein de Windows fichier batch étendre à la lettre de lecteur et le chemin d'accès du lot fichier.

Les variables %0-%9 reportez-vous à paramètres de ligne de commande du lot fichier. %1-%9 se référer à des arguments de ligne de commande après le lot de nom de fichier. %0 désigne le fichier de commandes.

Si vous suivez le caractère pourcentage (%) avec un tilde (~), vous pouvez insérer un modificateur(s) avant le numéro du paramètre à modifier la façon que la variable est développée. Le d modificateur étend le lecteur la lettre et le p modificateur étend le chemin du paramètre.

Exemple: disons que vous avez un répertoire de C: appelé bat_files, et dans ce répertoire un fichier nommé exemple.chauve-souris. Dans ce cas, %~dp0 (la combinaison de la d et p modificateurs) s'étend à C:\bat_files.

Découvrez cet article de Microsoft pour une explication complète.

Aussi, voir ce fil de discussion du forum.

165voto

Andy White Points 36586

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

La variable %0 dans un script batch est le nom de l'exécution d'un fichier de commandes. L' ~dp syntaxe particulière entre l' % et de la 0 dit essentiellement à développer la variable %0 pour montrer la lettre de lecteur et le chemin d'accès, qui vous donne le répertoire courant contenant le fichier de commandes!

42voto

Marvin Thobejane Points 356

Un autre truc qui serait d'une grande aide, c'est que pour définir le répertoire en cours à un autre lecteur , il faudrait utiliser %~d0 d'abord, puis cd %~dp0. Cela va changer le répertoire pour le fichier de commandes de la voiture, puis de modifier son dossier.

Sinon, pour #oneLinerLovers, comme @Omni souligné dans les commentaires cd /d %~dp0 va changer à la fois le lecteur et le répertoire :)

Espérons que cela aide quelqu'un.

26voto

HansBKK Points 326

Excellent exemple de Strawberry Perl portable shell launcher:

set drive=%~dp0
set drivep=%drive%
if #%drive:~-1%# == #\# set drivep=%drive:~0,-1%

set PATH=%drivep%\perl\site\bin;%drivep%\perl\bin;%drivep%\c\bin;%PATH%

pas sûr de ce que le négatif de 1 du le faire moi-même, mais il fonctionne un régal!

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