Ну а для отримання імені вашої партії найпростішим способом було б просто використовувати %~n0
.
@echo %~n0
виведе ім'я (без розширення) поточного запущеного пакетного файлу (якщо не виконано в підпрограмі, викликаної користувачем call
). Повний перелік таких "спеціальних" підстановок для імен шляхів можна знайти help for
в самому кінці довідки:
Крім того, було підсилено заміщення 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
докладної інформації з цього синтаксису.
setlocal ENABLEDELAYEDEXPANSION \r\n for /f %%s in ('set') do ( \r\n set tmp=%%s \r\n echo !tmp:~-3! \r\n )