Quelques pièges à surveiller:
Si vous double-cliquez sur le fichier lot %0
sera entouré par des guillemets. Par exemple, si vous enregistrez ce fichier comme c:\test.bat
:
@echo %0
@pause
Double-clic ouvrira une nouvelle invite de commande avec une sortie:
"C:\test.bat"
Mais si vous ouvrez une invite de commande et appelez directement à partir de cette invite de commande, %0
fera référence à ce que vous avez tapé.Si vous tapez test.bat
Entrez, la sortie de %0
aura pas de guillemets parce que vous avez saisi sans guillemets:
c:\>test.bat
test.bat
Si vous tapez test
Entrez, la sortie de %0
aurez aussi aucune extension, parce que vous avez saisi pas d'extension:
c:\>test
test
même chose pour tEsT
Entrez:
c:\>tEsT
tEsT
Si vous tapez "test"
Entrez, la sortie %0
aura des citations (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 avez double-cliqué il:
c:\>"C:\test.bat"
"C:\test.bat"
Notez que ce ne sont pas toutes les valeurs possibles %0
peut être parce que vous pouvez appeler le script à partir d'autres dossiers:
c:\some_folder>/../teST.bAt
/../teST.bAt
Tous les exemples ci-dessus auront également une incidence %~0
, parce que la sortie de %~0
est simplement la sortie de %0
cite moins (le cas échéant).
Il est également décrit dans la commande "call", qui, accessoirement, fonctionne avec des fichiers batch. :) – user314104
voir aussi http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true –
note à moi-même: 'echo% ~ dp0' sera ne fonctionne pas sur la ligne de commande, uniquement dans un fichier batch. Duh! – northben