Alcuni aspetti da tenere d'occhio:
Se si fa doppio clic sul file batch %0verrà racchiuso tra virgolette. Ad esempio, se si salva questo file come c:\test.bat:
@echo %0
@pause
Facendo doppio clic su di esso si aprirà un nuovo prompt dei comandi con output:
"C:\test.bat"
Ma se prima apri un prompt dei comandi e lo chiami direttamente da quel prompt dei comandi, %0farà riferimento a qualsiasi cosa tu abbia digitato . Se digiti test.batEnter, l'output di %0non avrà virgolette perché non hai digitato virgolette:
c:\>test.bat
test.bat
Se digiti testEnter, anche l'output di %0non avrà estensione, poiché non hai digitato alcuna estensione:
c:\>test
test
Lo stesso per tEsTEnter:
c:\>tEsT
tEsT
Se digiti "test"Enter, l'output di %0avrà virgolette (dal momento che le hai digitate) ma nessuna estensione:
c:\>"test"
"test"
Infine, se digiti "C:\test.bat", l'output sarebbe esattamente come se avessi fatto doppio clic su di esso:
c:\>"C:\test.bat"
"C:\test.bat"
Si noti che questi non sono tutti i possibili valori %0perché è possibile chiamare lo script da altre cartelle:
c:\some_folder>/../teST.bAt
/../teST.bAt
Anche tutti gli esempi mostrati sopra influenzeranno %~0, perché l'output di %~0è semplicemente l'output di %0 virgolette meno (se presenti).
echo %~dp0non funzionerà dalla riga di comando, solo in un file batch. Duh!