Alcuni aspetti da tenere d'occhio:
Se si fa doppio clic sul file batch %0
verrà 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, %0
farà riferimento a qualsiasi cosa tu abbia digitato . Se digiti test.bat
Enter, l'output di %0
non avrà virgolette perché non hai digitato virgolette:
c:\>test.bat
test.bat
Se digiti test
Enter, anche l'output di %0
non avrà estensione, poiché non hai digitato alcuna estensione:
c:\>test
test
Lo stesso per tEsT
Enter:
c:\>tEsT
tEsT
Se digiti "test"
Enter, l'output di %0
avrà 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 %0
perché è 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 %~dp0
non funzionerà dalla riga di comando, solo in un file batch. Duh!