Некоторые ошибки, на которые стоит обратить внимание:
Если дважды щелкнуть командный файл, он %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не будет работать в командной строке, только в командном файле. Duh!