<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT Возможно ли передать символ ^ в строке аргументов?]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=5658</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=5658&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT Возможно ли передать символ ^ в строке аргументов?».]]></description>
		<lastBuildDate>Tue, 19 Jul 2011 17:44:23 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT Возможно ли передать символ ^ в строке аргументов?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=50004#p50004</link>
			<description><![CDATA[<p>Нужна помощь с созданием батника и выводом их него в командной строке надписи со знаком восклицания.<br /></p><div class="codebox"><pre><code>&gt;&gt;&quot;Inst.cmd&quot; Echo ECHO                       Внимание^^!</code></pre></div><p>получается Inst.cmd<br /></p><div class="codebox"><pre><code>ECHO                       Внимание!</code></pre></div><p>в командной строке слово Внимание получается без знака восклицания. Эксперименты с увеличением ^^^ проглатывают знак восклицания в Inst.cmd. Хелп!</p>]]></description>
			<author><![CDATA[null@example.com (sov44)]]></author>
			<pubDate>Tue, 19 Jul 2011 17:44:23 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=50004#p50004</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT Возможно ли передать символ ^ в строке аргументов?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=49276#p49276</link>
			<description><![CDATA[<p>передача в кавычках<br /></p><div class="codebox"><pre><code>@echo off

set &quot;x=%~1&quot;

echo &quot;%x%&quot;

set &quot;x=%x:^=^^%&quot;

echo %x%</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 21 Jun 2011 09:59:18 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=49276#p49276</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT Возможно ли передать символ ^ в строке аргументов?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=47030#p47030</link>
			<description><![CDATA[<p><strong>Не так уж все и хорошо с таким решением, как оказалось.</strong></p><p>При обращении с полученными аргументами между экранированными кавычками (^&quot;), например:<br /></p><div class="codebox"><pre><code>1.bat &quot;чего-то там (внезапно скобочки или вот такие значки &amp;&amp; текст)&quot;</code></pre></div><p>содержимое аргумента начинает восприниматься как часть синтаксиса ну и соответственно вызывать ошибки. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> Своеобразные &quot;инъекции&quot; получаются.</p><br /><p>Отказался от использования методики, реализовал все на jscript. Там, кстати, тоже стоит все аргументы для передачи скрипту, в которых могут оказаться &quot;крышечки&quot; и пр., обрамлять кавычками, тогда никакие символы не пропадут.</p>]]></description>
			<author><![CDATA[null@example.com (jite)]]></author>
			<pubDate>Mon, 28 Mar 2011 19:58:21 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=47030#p47030</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT Возможно ли передать символ ^ в строке аргументов?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=46949#p46949</link>
			<description><![CDATA[<p>Спасибо за идею!</p><p>Передачу аргумента с ^ получилось стабилизировать следующим путем:</p><p>1.bat<br /></p><div class="codebox"><pre><code>@echo off
rem Variant 1 Strip&#039;n&#039;back
echo 1: &quot;%~1&quot;
call 2.bat &quot;%~1&quot;
echo.
rem Variant 2 Simple&#039;n&#039;lazy :)
echo 0: %1
call 2.bat %1</code></pre></div><p>2.bat (в периоде)<br /></p><div class="codebox"><pre><code>@echo off
echo 2: ^&quot;%~1^&quot;
call 3.bat ^&quot;%~1^&quot;</code></pre></div><p>3.bat (аналогично 2.bat)<br /></p><div class="codebox"><pre><code>@echo off
echo 3: ^&quot;%~1^&quot;</code></pre></div><p>Таким образом, для успешной передачи требуется:<br />1) Обеспечить передачу аргумента первому и любому последующему пакетнику <strong>обязательно</strong> в кавычках.<br />2) В первом пакетнике раскавычить (%~1) аргумент и вновь прилепить кавычки ИЛИ обращаться с аргументом как есть.<br />3) В последующих пакетниках раскавычивать аргумент, и при выводе или дальнейшей передаче добавлять кавычки экранируя их крышечкой (^&quot;), так чтобы они с одной стороны были, но с другой обработчик не решил бы из-за их наличия чего-то менять в аргументе.</p><p>Итого:<br /><strong>1.bat &quot;123^ abc ^^def^&quot;</strong></p><p><strong>1: &quot;123^ abc ^^def^&quot;<br />2: &quot;123^ abc ^^def^&quot;<br />3: &quot;123^ abc ^^def^&quot;</strong></p><p><strong>0: &quot;123^ abc ^^def^&quot;<br />2: &quot;123^ abc ^^def^&quot;<br />3: &quot;123^ abc ^^def^&quot;</strong></p>]]></description>
			<author><![CDATA[null@example.com (jite)]]></author>
			<pubDate>Sat, 26 Mar 2011 22:34:18 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=46949#p46949</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT Возможно ли передать символ ^ в строке аргументов?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=46944#p46944</link>
			<description><![CDATA[<p>Решается обрамлением параметра запуска в кавычки&nbsp; и обрезанием оных при получении скриптом.</p><p>1:<br /></p><div class="codebox"><pre><code>@echo off
echo 1: argument &quot;%~1&quot;
call 2.bat &quot;%~1&quot;</code></pre></div><p>2:<br /></p><div class="codebox"><pre><code>@echo off
echo 2: argument %~1</code></pre></div><div class="quotebox"><cite>Output пишет:</cite><blockquote><p>&gt;1.bat &quot;1^ 2^^ 3^^^&quot;<br />1: argument &quot;1^ 2^^ 3^^^&quot;<br />2: argument 1^ 2^^ 3^^^</p></blockquote></div><p>В общем вся суть в <strong>%~1</strong>.<br />А так как Вы собираетесь использовать это для именен файлов или папок, то для исключения пробелов во втором скрипте рекомендую использовать короткие пути (%~s1).</p>]]></description>
			<author><![CDATA[null@example.com (Аскет)]]></author>
			<pubDate>Sat, 26 Mar 2011 21:30:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=46944#p46944</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT Возможно ли передать символ ^ в строке аргументов?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=46942#p46942</link>
			<description><![CDATA[<p>Код пакетника 1:<br /></p><div class="codebox"><pre><code>@echo off
echo 1: argument _%1_
call 2.bat %1</code></pre></div><div class="codebox"><pre><code>@echo off
echo 2: argument _%1_</code></pre></div><p>1) Передаем простую строчку: <br /><strong>1.bat 123-abc</strong><br />Выдает:<br /><strong>1: argument _123-abc_<br />2: argument _123-abc_</strong><br />Все замечательно.</p><p>2) Передаем строчку, содержащую символ ^:<br /><strong>1.bat 123^abc</strong><br />Съедает символ на первом же пакетнике:<br /><strong>1: argument _123abc_<br />2: argument _123abc_</strong></p><p>3) Передаем строчку с удвоенным ^^:<br /><strong>1.bat 123^^abc</strong><br />Съедает.<br /><strong>1: argument _123abc_<br />2: argument _123abc_</strong></p><p>4) Не сдаемся, передаем с учетверенным ^:<br /><strong>1.bat 123^^^^abc</strong><br />Хм, оставляет один символ из 4-х:<br /><strong>1: argument _123^abc_<br />2: argument _123abc_</strong></p><p>5) Увеличиваем дальше. Любопытные изменения происходят при 8-ми ^:<br /><strong>1.bat 123^^^^^^^^abc</strong></p><p><strong>1: argument _123^^abc_<br />2: argument _123^abc_</strong><br />Из чего делаем вывод, что символ-таки передается в обоих пакетниках и при меньшем количестве, просто &quot;с трудом&quot; отображается.</p><p>6) Продолжаем эксперименты. Оборачиваем аргумент в кавычки:<br /><strong>1.bat &quot;123^^abc&quot;</strong></p><p><strong>1: argument _&quot;123^^abc&quot;_<br />2: argument _&quot;123^^^^abc&quot;_</strong><br />Начинается размножение. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> Как раз в такой ситуации мне и встретилась эта проблема. В пути к файлу был символ ^, который стал размножаться.</p><p>Что можно сделать для стабилизации передачи &quot;крышечки&quot; в аргументах пакетников?</p><p>Я знаю, что ^ используется в пакетниках и в командной строке как символ экранирования. Собственно и не удивляюсь такому поведению, но вдруг есть способ его обуздать?</p>]]></description>
			<author><![CDATA[null@example.com (jite)]]></author>
			<pubDate>Sat, 26 Mar 2011 20:14:16 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=46942#p46942</guid>
		</item>
	</channel>
</rss>
