Comment pouvez-vous obtenir le répertoire du script qui a été exécuté et l'utiliser dans le fichier .cmd?
Réponses
Trop de publicités?C'est l'équivalent du chemin d'accès du script:
%~dp0
Il utilise le lot paramètre d'extension de la syntaxe. Paramètre 0 est toujours le script lui-même.
Si votre script est stocké à l' C:\example\script.bat
, alors %~dp0
évalue C:\example\
.
ss64.com a plus d'informations sur le paramètre d'extension de la syntaxe. Voici l'extrait pertinent:
Vous pouvez obtenir la valeur d'un paramètre à l'aide d'un %, suivie par la position numérique sur la ligne de commande.
[...]
Lorsqu'un paramètre est utilisé pour fournir un nom de fichier puis dans le suivant la syntaxe suivante peut être appliquée:
[...]
%~d1 Étendre %1 lettre de Lecteur uniquement - C:
[...]
%~p1 Étendre %1 à un Chemin d'accès uniquement par ex. \utils\ ceci inclut un \ final qui peut être interprété comme un caractère d'échappement par certaines commandes.
[...]
Les modificateurs ci-dessus peuvent être combinées:
%~dp1 Étendre %1 à une lettre de lecteur et le chemin d'accès uniquement
[...]
Vous pouvez obtenir le chemin d'accès du script de traitement par lot lui-même avec %0, le paramètre extensions peuvent être appliquées à cette sorte %~dp0 sera de retour le Lecteur et le Chemin d'accès au script batch par exemple W:\scripts\
Raymond Chen a quelques idées:
http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx
Cité ici en plein MSDN archives ont tendance à être peu fiables:
Le plus simple est d'utiliser l'
%CD%
pseudo-variable. Il s'étend à l' répertoire de travail courant.
set OLDDIR=%CD%
.. do stuff ..
chdir /d %OLDDIR% &rem restore current directory
(Bien sûr, le répertoire de sauvegarde/restauration pourraient plus facilement été fait avec l'
pushd
/popd
, mais ce n'est pas le point ici.)L'
%CD%
astuce est utile même à partir de la ligne de commande. Par exemple, j' je me retrouve souvent dans un répertoire où il y a un fichier que je veux fonctionner, mais... oh, j'ai besoin de chdir dans un autre répertoire dans l'ordre pour effectuer cette opération.
set _=%CD%\curfile.txt
cd ... some other directory ...
somecommand args %_% args
(J'aime utiliser
%_%
que mes de zéro variable d'environnement.)Type
SET /?
voir les autres pseudo-variables fournies par la commande le processeur.
Aussi les commentaires de l'article sont bien la peine de numérisation par exemple celui-ci:
http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx#362741
Ce couvre l'utilisation de l' %~dp0:
Si vous voulez savoir où le fichier de commandes de vie:
%~dp0
%0
est le nom du fichier de commandes.~dp
vous donne le lecteur et le chemin de l'argument spécifié.