Что лучший способ состоит в том, чтобы сделать подстроку в пакетном файле?

Рассматривали ли вы использование переменных среды?

185
задан lospejos 29 March 2019 в 05:34
поделиться

1 ответ

Ну, для того, чтобы просто получить имя файла Вашего пакета самый легкий путь состоял бы в том, чтобы просто использовать %~n0.

@echo %~n0

произведет имя (без расширения) в настоящее время рабочего пакетного файла (если не выполняется в подпрограмме, названной call). Полный список таких “special” замен на пути может быть найден с 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, и т.д.

Для получения подстрок переменных аргумента такой как [1 110], %1, и т.д. необходимо присвоить их нормальной переменной среды с помощью [1 112] сначала:

:: Does not work:
@echo %1:~10,5

:: Assign argument to local variable first:
set var=%1
@echo %var:~10,5%

синтаксис еще более мощен:

  • %var:~-7% извлечения последние 7 символов от [1 114]
  • %var:~0,-4% извлекли бы все символы кроме последних четырех, которые также избавят Вас от расширения файла (принимающий три символа после периода [.]).

См. help set для получения дополнительной информации о том синтаксисе.

383
ответ дан Marco Bonelli 23 November 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: