1 (изменено: kiber_punk, 2009-07-15 20:22:51)

Тема: CMD/BAT: подстановка и разыменование переменных

Вывод отдельных символов из значения переменной.

Сама конструкция имеет вид:

%var:~№_символа[,кол-во]%

"~" - расширение переменной.
№_символа - с какого символа начать вывод. Нумерация начинается с нуля.
кол-во - сколько символов вывести.Если не указано, то выводятся весь остаток начиная с указанного символа.
Если оба значения (длина и число пропускаемых символов) отрицательны, следующим используемым значением будет длина значения переменной среды, добавленной к указанному значению пропуска или указанной длины.

@echo off
set A=12345
    ::задаем значение переменной A
echo %A:~0,1%
    ::вывод ПЕРВОГО СИМВОЛА из значения переменной
echo %A:~-1,1%
    ::вывод ПОСЛЕДНЕГО СИМВОЛА из значения
echo %A:~-3%
    ::вывод ТРЁХ ПОСЛЕДНИХ символов
echo %A:~0,3%
    ::вывод ТРЁХ ПЕРВЫХ символов
echo %A:~1%
    ::вывод значения БЕЗ ПЕРВОГО символа
%PATH:~-10%
    ::извлечет последние 10 символов переменной PATH.
%PATH:~0,-2%
    ::извлечет все символы переменной PATH, за исключением 2-х последних.

Подстановка (Регулярные выражения).

Используется для замены определённых символов (или групп символов) другим значением.
Конструкция:

%var:str=нов.значение%

пример:

SET B=1\2\3\4\5
    ::задание значения переменной
ECHO %B:\=//%
    ::вывод строки "прошедшей цензуру"
SET B=%B:\=//%
    ::обновление самой переменной с заменой "\" на "//"
ECHO %B%

Обработке подлежит любое удовлетворяющее вхождение строки, независимо от регистра символов.
Заменяемое значение "str" может начинаться со звездочки, и в этом случае это будет соответствовать любому началу строки до первого вхождения оставшейся части "str".

Пример:

set var=12345
set var=%var:*5=какие-то числа перед цифрой 5%
echo %var%

См. также CMD/BAT: транслитерация текста.