Quelques pièges à surveiller:
Si vous double-cliquez sur le fichier batch %0
sera entouré de guillemets. Par exemple, si vous enregistrez ce fichier sous c:\test.bat
:
@echo %0
@pause
Double-cliquez dessus pour ouvrir une nouvelle invite de commande avec sortie:
"C:\test.bat"
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 tapez test.bat
Enter, la sortie de %0
n'aura pas de guillemets car vous n'avez tapé aucun guillemet:
c:\>test.bat
test.bat
Si vous tapez test
Enter, la sortie de %0
n'aura pas d'extension non plus, car vous n'avez tapé aucune extension:
c:\>test
test
Pareil pour tEsT
Enter:
c:\>tEsT
tEsT
Si vous tapez "test"
Enter, la sortie de %0
aura des guillemets (puisque vous les avez tapés) mais pas d'extension:
c:\>"test"
"test"
Enfin, si vous tapez "C:\test.bat"
, la sortie serait exactement comme si vous aviez double-cliqué dessus:
c:\>"C:\test.bat"
"C:\test.bat"
Notez que ce ne sont pas toutes les valeurs %0
possibles car vous pouvez appeler le script à partir d'autres dossiers:
c:\some_folder>/../teST.bAt
/../teST.bAt
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).
echo %~dp0
ne fonctionnera pas en ligne de commande, uniquement dans un fichier de commandes. Duh!