<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: подстановка и разыменование переменных]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=3125&amp;type=atom" />
	<updated>2009-05-10T18:46:20Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=3125</id>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: подстановка и разыменование переменных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=22779#p22779" />
			<content type="html"><![CDATA[<p><strong>Вывод отдельных символов из значения переменной.</strong></p><p>Сама конструкция имеет вид:<br /></p><div class="codebox"><pre><code>%var:~№_символа[,кол-во]%</code></pre></div><p><strong>&quot;~&quot;</strong> - расширение переменной.<br /><strong>№_символа</strong> - с какого символа начать вывод. Нумерация начинается с нуля.<br /><strong>кол-во</strong> - сколько символов вывести.Если не указано, то выводятся весь остаток начиная с указанного символа.<br />Если оба значения (длина и число пропускаемых символов) отрицательны, следующим используемым значением будет длина значения переменной среды, добавленной к указанному значению пропуска или указанной длины.</p><div class="codebox"><pre><code>@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-х последних.</code></pre></div><p><strong>Подстановка (Регулярные выражения).</strong></p><p>Используется для замены определённых символов (или групп символов) другим значением.<br />Конструкция:<br /></p><div class="codebox"><pre><code>%var:str=нов.значение%</code></pre></div><p>пример:<br /></p><div class="codebox"><pre><code>SET B=1\2\3\4\5
    ::задание значения переменной
ECHO %B:\=//%
    ::вывод строки &quot;прошедшей цензуру&quot;
SET B=%B:\=//%
    ::обновление самой переменной с заменой &quot;\&quot; на &quot;//&quot;
ECHO %B%</code></pre></div><p>Обработке подлежит любое удовлетворяющее вхождение строки, независимо от регистра символов.<br />Заменяемое значение &quot;str&quot; может начинаться со звездочки, и в этом случае это будет соответствовать любому началу строки до первого вхождения оставшейся части &quot;str&quot;.</p><p>Пример:<br /></p><div class="codebox"><pre><code>set var=12345
set var=%var:*5=какие-то числа перед цифрой 5%
echo %var%</code></pre></div><p>См. также <a href="http://forum.script-coding.com/viewtopic.php?id=2390">CMD/BAT: транслитерация текста</a>.</p>]]></content>
			<author>
				<name><![CDATA[kiber_punk]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=23894</uri>
			</author>
			<updated>2009-05-10T18:46:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=22779#p22779</id>
		</entry>
</feed>
