<?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: findstr и кодировка 1251]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=7578</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=7578&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: findstr и кодировка 1251».]]></description>
		<lastBuildDate>Tue, 11 Dec 2012 18:10:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66881#p66881</link>
			<description><![CDATA[<div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><p>echo off<br />chcp 1251 &gt; nul<br />chcp 866 &gt; nul&amp;echo строка в сп1251|findstr /c:&quot;строка в сп&quot;</p></blockquote></div><p>И где здесь поиск по входным файлам?</p>]]></description>
			<author><![CDATA[null@example.com (yuriy2000)]]></author>
			<pubDate>Tue, 11 Dec 2012 18:10:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66881#p66881</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66877#p66877</link>
			<description><![CDATA[<p>echo off<br />chcp 1251 &gt; nul<br />chcp 866 &gt; nul&amp;echo строка в сп1251|findstr /c:&quot;строка в сп&quot;</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 11 Dec 2012 17:50:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66877#p66877</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66876#p66876</link>
			<description><![CDATA[<p>Нужен универсальный способ вызова <strong>findstr </strong>для обработки текстовых файлов в кодировке 1251.<br />Без предварительной перекодировки входных файлов.</p><p>Я уточняю условия&nbsp; (это только один из случаев, просто для примера):<br />Допустим есть пара тысяч html-файлов - нужно среди них найти все файлы в которых содержится определенная строка (состоящая из кириллицы), чтобы скопировать эти файлы в другой каталог </p><p>Если строка не содержит кириллицу, то делаем так </p><div class="codebox"><pre><code>for /F %A in (&#039;findstr /M &quot;строка&quot; *.html&#039;) do @xcopy %A  C:\backup </code></pre></div><p>Задача заменить <strong>findstr </strong> на любой bat/cmd-file или даже VBS, но только бы заставить этот <strong>findstr </strong>искать строки в файлах с кодировкой 1251. Способ простой перекодировки вводимой строки из 1251 в 866 не срабатывает, поскольку этот чертов findstr некоторые перекодированные символы не понимает.&nbsp; Например ю и П.<br />Единственный, на мой взгляд способ, (хотя и не очень корректный) это сделать собственную таблицу перекодировки, win2dos, и те символы, которые findstr не понимает, заменять на точку.</p>]]></description>
			<author><![CDATA[null@example.com (yuriy2000)]]></author>
			<pubDate>Tue, 11 Dec 2012 17:44:21 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66876#p66876</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66872#p66872</link>
			<description><![CDATA[<p>echo off<br />chcp 1251 &gt; nul<br />chcp 866 &gt; nul&amp;echo строка в сп1251|findstr &quot;строка&quot;</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 11 Dec 2012 17:16:18 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66872#p66872</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66721#p66721</link>
			<description><![CDATA[<div class="codebox"><pre><code>@Echo off

:: Поиск кириллической строки с помощью findstr.
:: Параметры запуска: строка поиска/имя файла с путем
:: Пример: &quot;C:\Findtxt.bat&quot; что я ищу/C:\Мой текст.txt

chcp 1251 &gt;nul 2&gt;&amp;1
set str=%*%
for /f &quot;tokens=1,2* delims=/&quot; %%a in (&#039;echo.%str%&#039;) do (
set str=%%a
set file=&quot;%%~b&quot;
)

for /f &quot;tokens=*&quot; %%i in (&#039;cmd /c &quot;chcp 1251 &gt;nul &amp;&amp; echo.%str% | (chcp 866 &gt; nul &amp;&amp; find /v &quot;&quot;) | findstr /g:/ %file% | (chcp 1251 &gt;nul &amp;&amp; find /v &quot;&quot;)&quot;&#039;) do  (
chcp 866 &gt;nul 2&gt;&amp;1
echo.%%i
)
Pause &gt;nul 2&gt;&amp;1
EXIT
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Blaze812)]]></author>
			<pubDate>Thu, 06 Dec 2012 10:21:16 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66721#p66721</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66691#p66691</link>
			<description><![CDATA[<div class="quotebox"><cite>Blaze812 пишет:</cite><blockquote><p>Медленно конечно... на файл 21847 строк ушло 4 минуты...</p></blockquote></div><p>1. искомая строка должна быть входным параметром для .bat-файла<br />2. 4 минуты для 20 тысяч строк... такая &quot;скорость&quot; никуда не годится. ;(</p>]]></description>
			<author><![CDATA[null@example.com (yuriy2000)]]></author>
			<pubDate>Thu, 06 Dec 2012 01:53:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66691#p66691</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66688#p66688</link>
			<description><![CDATA[<p>А если так:</p><div class="codebox"><pre><code>@Echo off

chcp 1251 &gt;nul 2&gt;&amp;1
set str1=Строка или часть строки, которую ищем. 
for /f &quot;tokens=*&quot; %%i in (Имя файла с путем, на английском или в DOS кодировке.) do call :to866 &quot;%%i&quot;
del /f /q &quot;%temp%\000.txt&quot;
for /f &quot;tokens=*&quot; %%i in (%temp%\001.txt) do echo.%%~i
del /f /q &quot;%temp%\001.txt&quot;

Pause &gt;nul 2&gt;&amp;1
EXIT

:to866
chcp 866 &gt;nul 2&gt;&amp;1
&gt;&quot;%temp%\000.txt&quot; echo.%1%
&gt;&gt;&quot;%temp%\001.txt&quot; findstr /I /C:&quot;%str1%&quot; &quot;%temp%\000.txt&quot;
GoTo :EOF
</code></pre></div><p>Медленно конечно... на файл 21847 строк ушло 4 минуты...</p>]]></description>
			<author><![CDATA[null@example.com (Blaze812)]]></author>
			<pubDate>Wed, 05 Dec 2012 22:44:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66688#p66688</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66665#p66665</link>
			<description><![CDATA[<p><strong>Blaze812</strong> я что-то не понял при чем тут этот пример?<br />Речь шла о том, что нужно искать текстовые строки в файлах с кодировкой 1251. <br />Дополнительное условие:&nbsp; Размер входных файлов достаточно велик, чтобы их перекодировать.</p><p>Самый простой способ использовать <strong>grep</strong>, но к сожалению grep есть не на каждой машине...</p>]]></description>
			<author><![CDATA[null@example.com (yuriy2000)]]></author>
			<pubDate>Wed, 05 Dec 2012 16:52:37 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66665#p66665</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66455#p66455</link>
			<description><![CDATA[<div class="codebox"><pre><code>@Echo off

chcp 1251 &gt;nul 2&gt;&amp;1
set str1=Основной шлюз
for /f &quot;tokens=*&quot; %%i in (&#039;ipconfig /all&#039;) do call :to866 &quot;%%i&quot;

Pause &gt;nul 2&gt;&amp;1
EXIT

:to866
chcp 866 &gt;nul 2&gt;&amp;1
echo.%~1 | findstr /I /C:&quot;%str1%&quot;
GoTo :EOF
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Blaze812)]]></author>
			<pubDate>Mon, 03 Dec 2012 13:38:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66455#p66455</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66318#p66318</link>
			<description><![CDATA[<p>Всё просто <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p><div class="codebox"><pre><code>@Echo off

chcp 1251 &gt;nul 2&gt;&amp;1
set str1=Основной шлюз
for /f &quot;tokens=*&quot; %%i in (&#039;ipconfig /all&#039;) do call :to866 &quot;%%i&quot;

Pause &gt;nul 2&gt;&amp;1
EXIT

:to866
chcp 866 &gt;nul 2&gt;&amp;1
echo.%~1 | findstr /I /C:&quot;%str1%&quot;
GoTo :EOF</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Blaze812)]]></author>
			<pubDate>Fri, 30 Nov 2012 22:59:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66318#p66318</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=63967#p63967</link>
			<description><![CDATA[<div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><div class="codebox"><pre><code>cmd /c &quot;chcp 1251 &gt;nul &amp;&amp; echo Вася | (chcp 866 &gt; nul &amp;&amp; find /v &quot;&quot;) | findstr /g:/ file.txt | (chcp 1251 &gt;nul &amp;&amp; find /v &quot;&quot;)&quot;</code></pre></div></blockquote></div><p><strong>smaharbA </strong>&nbsp; можете описать&nbsp; что делает этот код, а то тут куча конвейеров - не совсем понятно...</p>]]></description>
			<author><![CDATA[null@example.com (yuriy2000)]]></author>
			<pubDate>Tue, 18 Sep 2012 16:54:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=63967#p63967</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=63966#p63966</link>
			<description><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>воспользоваться для перекодировки строки временным файлом: </p><div class="codebox"><pre><code>chcp 1251&gt;nul
echo %1&gt;tmp.tmp
chcp 866&gt;nul
set /p str=&lt;tmp.tmp
findstr &quot;%str%&quot; *.html</code></pre></div></blockquote></div><p>Такая перекодировка тоже не помогает.&nbsp; Попробовал с разными входными строками&nbsp; так и не понял почему в каких-то случаях работает, в каких то нет. Видимо некоторые символы кириллицы при перекодировке у <strong>findstr </strong> вызывают помешательство. Он даже не пытается искать.... </p><p>Вывод: Сам буду использовать grep <img src="//forum.script-coding.com/img/smilies/cool.png" width="15" height="15" />, а остальным предложу конвертировать входные файлы. <img src="//forum.script-coding.com/img/smilies/hmm.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (yuriy2000)]]></author>
			<pubDate>Tue, 18 Sep 2012 16:52:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=63966#p63966</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=63940#p63940</link>
			<description><![CDATA[<div class="codebox"><pre><code>cmd /c &quot;chcp 1251 &gt;nul &amp;&amp; echo Вася | (chcp 866 &gt; nul &amp;&amp; find /v &quot;&quot;) | findstr /g:/ file.txt | (chcp 1251 &gt;nul &amp;&amp; find /v &quot;&quot;)&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 18 Sep 2012 06:26:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=63940#p63940</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=63934#p63934</link>
			<description><![CDATA[<div class="quotebox"><cite>yuriy2000 пишет:</cite><blockquote><p>я же предполагал использовать вызов через передачу параметра</p></blockquote></div><p>Можно попробовать перекодировать и переменный параметр.<br />Я, правда, не уверен, что нельзя придумать что-либо получше и не проверял, как это работает со всеми буквами, но мне на ум приходят лишь два решения:<br />воспользоваться для перекодировки строки временным файлом: </p><div class="codebox"><pre><code>chcp 1251&gt;nul
echo %1&gt;tmp.tmp
chcp 866&gt;nul
set /p str=&lt;tmp.tmp
findstr &quot;%str%&quot; *.html</code></pre></div><p>или зафиксировать в самом командном файле две строки с символами в разных кодировках и потом во внешнем цикле посимвольно просматривать преобразуемую строку, во внутреннем цикле — строку с символами в одной кодировке и при нахождении совпадения заменять символом второй кодировки с тем же номером…</p><p>Может, чем-то полезна будет тема «<a href="http://forum.script-coding.com/viewtopic.php?id=876">CMD/BAT: обработка (фильтрация) текста</a>» (я в неё не вникал)?</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 18 Sep 2012 02:17:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=63934#p63934</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: findstr и кодировка 1251]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=63919#p63919</link>
			<description><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>Кроме перекодировки входных файлов ещё возможна перекодировка &quot;супер-пупер-строки&quot;…</p></blockquote></div><p>да, согласен, но этот чертов <strong>findstr</strong> не все перекодированные таким образом кириллические буквы понимает.<br />Например [ю] [П] <img src="//forum.script-coding.com/img/smilies/hmm.png" width="15" height="15" /></p><p>я же предполагал использовать вызов через передачу параметра </p><div class="codebox"><pre><code>
@chcp 1251 &gt;nul
findstr &quot;%1&quot; *.html 
@chcp 866 &gt;nul</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (yuriy2000)]]></author>
			<pubDate>Mon, 17 Sep 2012 03:43:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=63919#p63919</guid>
		</item>
	</channel>
</rss>
