Деякі спостереження:
Якщо двічі клацнути, пакетний файл %0буде оточений лапками. Наприклад, якщо ви збережете цей файл у вигляді c:\test.bat:
@echo %0
@pause
Двічі клацнувши по ньому, відкриється новий командний рядок з виходом:
"C:\test.bat"
Але якщо ви спочатку відкриєте командний рядок і зателефонуєте йому безпосередньо з цього командного рядка, %0буде посилатися на все, що ви ввели . Якщо ви будете вводити test.batEnter, у висновку не %0буде жодних лапок, оскільки ви не ввели лапки:
c:\>test.bat
test.bat
Якщо ви введете текст testEnter, вихідний файл %0також не матиме розширення, оскільки ви не ввели розширення:
c:\>test
test
Те саме tEsTEnter:
c:\>tEsT
tEsT
Якщо ви введете "test"Enter, вихід %0буде мати лапки (оскільки ви їх набрали), але без розширення:
c:\>"test"
"test"
Нарешті, якщо ви введете "C:\test.bat", вихід буде точно таким, як якщо б ви двічі клацнули по ньому:
c:\>"C:\test.bat"
"C:\test.bat"
Зауважте, що це не всі можливі значення, %0оскільки ви можете викликати сценарій з інших папок:
c:\some_folder>/../teST.bAt
/../teST.bAt
Усі приклади, показані вище, також впливатимуть %~0, оскільки вихід %~0просто - вихід %0 мінусових лапок (якщо такі є).
echo %~dp0не працюватиме в командному рядку, лише у пакетному файлі. Да!