Деякі спостереження:
Якщо двічі клацнути, пакетний файл %0
буде оточений лапками. Наприклад, якщо ви збережете цей файл у вигляді c:\test.bat
:
@echo %0
@pause
Двічі клацнувши по ньому, відкриється новий командний рядок з виходом:
"C:\test.bat"
Але якщо ви спочатку відкриєте командний рядок і зателефонуєте йому безпосередньо з цього командного рядка, %0
буде посилатися на все, що ви ввели . Якщо ви будете вводити test.bat
Enter, у висновку не %0
буде жодних лапок, оскільки ви не ввели лапки:
c:\>test.bat
test.bat
Якщо ви введете текст test
Enter, вихідний файл %0
також не матиме розширення, оскільки ви не ввели розширення:
c:\>test
test
Те саме tEsT
Enter:
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
не працюватиме в командному рядку, лише у пакетному файлі. Да!