(Во-первых, я хотел бы рекомендовать этот полезный справочный сайт для партии:
http://ss64.com/nt/)
Тогда просто еще одно полезное объяснение: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
Переменная% ~ dp0
Переменная% ~ dp0 (это ноль) при обращении в Windows
пакетный файл расширится до букв d rive и p ath этой партии
файл.
Переменные% 0-% 9 относятся к параметрам командной строки пакета
файл. % 1-% 9 ссылается на аргументы командной строки после имени пакетного файла.
% 0 относится к самому пакетному файлу.
Если после символа процента (%) следует символ тильды (~),
Вы можете вставить модификатор (и) перед номером параметра, чтобы изменить
способ расширения переменной. Модификатор d распространяется на диск
буква и модификатор p расширяется до пути к параметру.
Пример: допустим, у вас есть каталог на C: с именем bat_files, и
в этом каталоге находится файл с именем example.bat. В этом случае% ~ dp0
(объединяя модификаторы d и p) расширится до C: \ bat_files.
Проверьте эту статью Microsoft для полного объяснения.
Также, ознакомьтесь с этой веткой форума .
И более четкая ссылка из здесь :
%CmdCmdLine%
вернет всю командную строку, переданную в CMD.EXE
%*
вернет остаток командной строки, начиная с первого аргумента командной строки (в Windows NT 4% * также включает все начальные пробелы)
%~dn
вернет букву диска% n (n может варьироваться от 0 до 9), если% n является допустимым путем или именем файла (без UNC)
%~pn
вернет каталог% n, если% n является допустимым путем или именем файла (без UNC)
%~nn
вернет имя файла только% n, если% n является допустимым именем файла
%~xn
вернет расширение файла только% n, если% n является допустимым именем файла
%~fn
вернет полный путь% n, если% n является допустимым именем файла или каталога
ДОБАВИТЬ 1
Только что нашел хорошую справку для таинственного оператора тильды ~
.
Строка %~
называется оператором процентов тильды . Вы можете найти его в таких ситуациях, как: %~0
.
Строка :~
называется оператором двоеточия . Вы можете найти его как %SOME_VAR:~0,-1%
.
ADD 2 - 13:12 7/6 / 2018
%1-%9
см. Аргументы командной строки. Если они являются , а не действительными значениями пути, %~dp1
- %~dp9
будет расширяться до того же значения, что и %~dp0
. Но если они являются действительными значениями пути, они расширятся до их собственного значения драйвера / пути.
Например:
(Batch.bat)
@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on
Прогон 1:
D:\Workbench>batch arg1 arg2
~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\
Прогон 2:
D:\Workbench>batch c:\123\a.exe e:\abc\b.exe
~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\