Ну, для получения имени файла вашей партии самым простым способом было бы просто использовать %~n0
.
@echo %~n0
будет выводить имя (без расширения), в настоящее время работает командный файл (если не выполнены в виде подпрограммы, созванной call
). Полный перечень таких «специальных» замены для имен путей могут быть найдены с help for
, в самом конце помощью:
Кроме того, замена ПО переменных ссылок была усовершенствована. Теперь вы можете использовать следующий дополнительный синтаксис:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
модификаторы могут быть объединены, чтобы получить сложные результаты:
%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
Чтобы точно ответить на ваш вопрос, однако: подстроки выполнены с использованием :~start,length
Обозначение:
%var:~10,5%
будет извлекать 5 символов из позиции 10 в переменной окружения %var%
.
Примечание: Индекс строк равен нулю основе, так что первый символ в позиции 0, второй в 1, и т.д.
Чтобы получить подстроки аргументов переменных, таких как %0
, %1
, и т.д. . вы должны назначить их к нормальной переменной окружения с помощью set
первый:
:: Does not work:
@echo %1:~10,5
:: Assign argument to local variable first:
set var=%1
@echo %var:~10,5%
синтаксис является еще более мощным:
%var:~-7%
извлекает последние 7 символов из %var%
%var:~0,-4%
извлечет все символы, за исключением последних четырех, которые бы также избавить вас от расширения файла (предполагается, что три символа после периода [.
]).
Для получения более подробной информации об этом синтаксисе см. help set
.
Это отличный, тщательный ответ. Большое спасибо. – JosephStyons
Ну, теперь три ответа скатываются в один или около того, благодаря Патрику :) – Joey
Вывод субстроек не работает с переменными цикла FOR, так что вам придется делать следующее (\ r \ n в средней строке кода ломается, потому что SO, похоже, не допускает разрывов строк в комментариях): 'setlocal ENABLEDELAYEDEXPANSION \ r \ n for/f %% s in ('set') do (\ r \ n \t set tmp = %% s \ r \ n \t echo! Tmp: ~ -3! \ R \ n ) ' – Fr0sT