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