<?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: Замена одной строки на другую в txt файле]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7443</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7443&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Замена одной строки на другую в txt файле».]]></description>
		<lastBuildDate>Wed, 03 Oct 2012 04:42:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64500#p64500</link>
			<description><![CDATA[<p>я немного не понял, а где тут путь к файлу ищется?<br />у меня ведь не на диске с:, а в локальной сети.</p>]]></description>
			<author><![CDATA[null@example.com (bugagashi)]]></author>
			<pubDate>Wed, 03 Oct 2012 04:42:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64500#p64500</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64488#p64488</link>
			<description><![CDATA[<div class="quotebox"><cite>MegaScrew пишет:</cite><blockquote><p><strong>Rumata</strong>, ваш пример работает, но если его подвести под указанную тут задачу то не работает.<br />Нерабочий код:</p><div class="codebox"><pre><code>@echo off

set XYZ=FA_ALERT=1
SET find=FA_ALERT=1
SET replace=FA_ALERT=0


echo %XYZ%

set XYZ=%XYZ:%find%=%replace%%

echo %XYZ%</code></pre></div><p>Так как после подстановки %find% cmd не смотрит дальше. Так это обойти что бы все заработало?</p></blockquote></div><p><strong>Можно! Например вот так:</strong></p><div class="codebox"><pre><code>@echo off

call :MaskEQ VAR &quot;==!==&quot;
echo.%VAR%
rem Now VAR contains string in HEX: 1E 1E 21 1E 1E

call :RestEQ VAR &quot;%VAR%&quot;
echo.%VAR%
rem Now VAR restored to: ==!==

exit /b

:MaskEQ
rem call :MaskEQ VAR &quot;%STR%&quot;
setlocal EnableExtensions
set STR=%~2
if not defined STR goto _exit_MaskEQ
rem mask ! char to 0x1d before EnableDelayedExpansion
set STR=%STR:!=1d%
set i=0
setlocal EnableDelayedExpansion
:_next_MaskEQ
set C=!STR:~%i%,1!
if not defined C goto _ret_MaskEQ
set C=%C:&quot;=%
set /a j=%i%+1
rem replace = char to pattern 0x1e
if &quot;%C%&quot;==&quot;=&quot; set STR=!STR:~0,%i%!1e!STR:~%j%!
set /a i=%i%+1
goto _next_MaskEQ
:_ret_MaskEQ
endlocal&amp;set STR=%STR%
rem restore ! char from 0x1d
set STR=%STR:1d=!%
:_exit_MaskEQ
endlocal&amp;set %1=%STR%
goto :EOF


:RestEQ
rem call :RestEQ VAR &quot;%STR%&quot;
setlocal EnableExtensions
set STR=%~2

rem restore = char from 0x1e
if defined STR set STR=%STR:1e==%
endlocal&amp;set %1=%STR%
goto :EOF</code></pre></div><p>P.S.<br />Вместо нечитабельных символов 0x1D и 0x1E можно задать любую уникальную строку<br />Всех благ!</p><p>там где&nbsp; &nbsp;style=&quot;color: #448888;&quot;&gt; это не мое это лишнее <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> ну кто знает поймет</p><p>Вот без подсветки синтаксиса:<br /></p><div class="codebox"><pre><code>@echo off

call :MaskEQ VAR &quot;==!==&quot;
echo.%VAR%
rem Now VAR contains string in HEX: 1E 1E 21 1E 1E

call :RestEQ VAR &quot;%VAR%&quot;
echo.%VAR%
rem Now VAR restored to: ==!==

exit /b

:MaskEQ
rem call :MaskEQ VAR &quot;%STR%&quot;
setlocal EnableExtensions
set STR=%~2
if not defined STR goto _exit_MaskEQ
rem mask ! char to 0x1d before EnableDelayedExpansion
set STR=%STR:!=1d%
set i=0
setlocal EnableDelayedExpansion
:_next_MaskEQ
set C=!STR:~%i%,1!
if not defined C goto _ret_MaskEQ
set C=%C:&quot;=%
set /a j=%i%+1
rem replace = char to pattern 0x1e
if &quot;%C%&quot;==&quot;=&quot; set STR=!STR:~0,%i%!1e!STR:~%j%!
set /a i=%i%+1
goto _next_MaskEQ
:_ret_MaskEQ
endlocal&amp;set STR=%STR%
rem restore ! char from 0x1d
set STR=%STR:1d=!%
:_exit_MaskEQ
endlocal&amp;set %1=%STR%
goto :EOF


:RestEQ
rem call :RestEQ VAR &quot;%STR%&quot;
setlocal EnableExtensions
set STR=%~2
if defined STR set STR=%STR:1e==%&amp;rem restore = char from 0x1e
endlocal&amp;set %1=%STR%
goto :EOF</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (digreesun)]]></author>
			<pubDate>Tue, 02 Oct 2012 17:07:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64488#p64488</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=64466#p64466</link>
			<description><![CDATA[<p>Я бы хотел добавить от себя вопрос.<br />Суть такая же.<br />Есть файл INF.DAT<br />В нём есть строка, начинающаяся на origin, после идёт <br />= значение.<br />Необходимо значение, какое оно бы не было, заменить на 0.<br />Файл находиться в сети, на одной и той же машине. например \\Andrey\prepare\<br />После prepare могут быть ещё папки. INF.DAT есть всегда и, внутри оного, origin = значение, тоже.</p>]]></description>
			<author><![CDATA[null@example.com (bugagashi)]]></author>
			<pubDate>Tue, 02 Oct 2012 11:58:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=64466#p64466</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62666#p62666</link>
			<description><![CDATA[<div class="quotebox"><cite>MegaScrew пишет:</cite><blockquote><p>Так это обойти что бы все заработало?</p></blockquote></div><p>Скорее всего никак. </p><p>Лично я использую утилиты SED, AWK из комплекта <a href="http://unxutils.sourceforge.net/">UnixUtils</a> или PERL; или же пишу небольшой скрипт на JSCRIPT и внедряю его в BAT-файл, как это описано здесь - <a href="http://forum.script-coding.com/viewtopic.php?id=2886">bat+jscript: два в одном</a></p><p>Ваша задача очень легко решается в 1-2 строки с помощью SED/AWK/PERL и требует больших усилий в командной строке DOS.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 10 Aug 2012 11:37:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62666#p62666</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62665#p62665</link>
			<description><![CDATA[<p><strong>Rumata</strong>, ваш пример работает, но если его подвести под указанную тут задачу то не работает.<br />Нерабочий код:</p><div class="codebox"><pre><code>@echo off

set XYZ=FA_ALERT=1
SET find=FA_ALERT=1
SET replace=FA_ALERT=0


echo %XYZ%

set XYZ=%XYZ:%find%=%replace%%

echo %XYZ%</code></pre></div><p>Так как после подстановки %find% cmd не смотрит дальше. Так это обойти что бы все заработало?</p>]]></description>
			<author><![CDATA[null@example.com (MegaScrew)]]></author>
			<pubDate>Fri, 10 Aug 2012 10:50:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62665#p62665</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62663#p62663</link>
			<description><![CDATA[<div class="quotebox"><cite>MegaScrew пишет:</cite><blockquote><p>по второму вопросу про %PATH:str1=str2% ??</p></blockquote></div><div class="codebox"><pre><code>@echo off

set XYZ=VAR=VALUE

echo %XYZ%

set XYZ=%XYZ:VAR=KEY%

echo %XYZ%</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 10 Aug 2012 08:27:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62663#p62663</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62661#p62661</link>
			<description><![CDATA[<p><strong>Rumata</strong> и <strong>alexii</strong>, спасибо за инфу.<br />так я тоже в FAR-e, собственно в нем и увидел лишние пробелы в итоговом файле.<br />А что скажете по второму вопросу про %PATH:str1=str2% ??</p>]]></description>
			<author><![CDATA[null@example.com (MegaScrew)]]></author>
			<pubDate>Fri, 10 Aug 2012 07:33:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62661#p62661</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62660#p62660</link>
			<description><![CDATA[<p>И:<br /></p><div class="codebox"><pre><code>    IF !line!==%find% ( SET line=%replace% )</code></pre></div><p>на:<br /></p><div class="codebox"><pre><code>    IF !line!==%find% ( SET line=%replace%)</code></pre></div><p><img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. Начинаю понимать, почему рекомендуют использовать такую форму:<br /></p><div class="codebox"><pre><code>set &quot;Var=Value&quot;</code></pre></div><p>Мне-то, в Far Manager&#039;е, все пробельные символы видны.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 10 Aug 2012 07:18:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62660#p62660</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62659#p62659</link>
			<description><![CDATA[<div class="quotebox"><cite>MegaScrew пишет:</cite><blockquote><p>Есть в нем недостаток, после прохода по файлу данный скрипт добавляет два лишних пробела в конец каждой строки.</p></blockquote></div><p>Замените<br /></p><div class="codebox"><pre><code>echo !line! &gt;&gt; %tfile%</code></pre></div><p>на <br /></p><div class="codebox"><pre><code>echo !line!&gt;&gt; %tfile%</code></pre></div><p>========<br />Вообще, лучше делать один централизованный вывод. Мне известны два способа:</p><p>1. группировка<br /></p><div class="codebox"><pre><code>(
    echo string
    echo another string
) &gt; filename</code></pre></div><p>2. вызов подпрограммы<br /></p><div class="codebox"><pre><code>call :sub &gt; filename

:: выход из скрипта
goto :EOF

:sub
echo string
echo another string

:: выход из подпрограммы
goto :EOF</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 10 Aug 2012 07:04:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62659#p62659</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62657#p62657</link>
			<description><![CDATA[<p>это рабочий батник.&nbsp; <br />Запускать myfile.bat targetfile.txt<br /></p><div class="codebox"><pre><code>@ECHO OFF
setlocal enabledelayedexpansion
SET ifile=%1
SET tfile=%ifile%.tmp
SET find=FA_ALERT=1
SET replace=FA_ALERT=0
IF EXIST %tfile% DEL /Q %tfile%

FOR /F &quot;tokens=* delims=, &quot; %%a IN (%ifile%) DO ( 
    set line=%%a
    IF !line!==%find% ( SET line=%replace% )
    echo !line! &gt;&gt; %tfile%
)

MOVE /Y %tfile% %ifile%

EXIT /B 0</code></pre></div><p>PS:<br />Есть в нем недостаток, после прохода по файлу данный скрипт добавляет два лишних пробела в конец каждой строки. Следовательно обработать один и тот же файл дважды не получиться так как строка %finde% не будет совпадать со строкой у которой в конце пробелы. Кто знает как вылечить это?<br />PSS: более простой вариант был бы с использованием %PATH:str1=str2% только вот беда, если в str1 или str2 есть знак равно как в данном случае то все летит в чертям, кто знает как лечить?<br />Взять строку в кавычки не предлагать так как в рамках данной задачи это не вариант.</p>]]></description>
			<author><![CDATA[null@example.com (MegaScrew)]]></author>
			<pubDate>Fri, 10 Aug 2012 06:28:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62657#p62657</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62635#p62635</link>
			<description><![CDATA[<p>это не батник, это эскиз</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Thu, 09 Aug 2012 18:52:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62635#p62635</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62609#p62609</link>
			<description><![CDATA[<p>Большое спасибо, я так понял это то что будет происходить с самим файлом, а как указать что бы этот скрипт применялся к конкретному файлу (путь как указать?) Просто так попробовал включить такой батник, он несработал.</p>]]></description>
			<author><![CDATA[null@example.com (Arg)]]></author>
			<pubDate>Thu, 09 Aug 2012 13:44:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62609#p62609</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62589#p62589</link>
			<description><![CDATA[<p>for %%x ... do (<br />for %%y in (%%x) do (<br />set z=%%y<br />if !z!==FA_ALERT=1 set !z!=FA_ALERT=0<br />set zz=!zz!!z!тутапробел<br />)<br />echo !zz!<br />)</p><p>как то так</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Thu, 09 Aug 2012 11:34:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62589#p62589</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Замена одной строки на другую в txt файле]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62569#p62569</link>
			<description><![CDATA[<p>Здраствуйте, помогите пожалуйста написать батник, я неочень хорошо в них разбираюсь, но юзал поиск, находил несколько схожих тем, но разобраться все равно неполучилось.</p><p>Нужно, что бы при нажатии на батник в файле MYFILE.TXT, который состоит из не более чем 100 строк, строка FA_ALERT=1 заменялась на строку FA_ALERT=0, желательно что бы при этом ненужно было указывать номер этой строки.</p><p>Заранее спасибо всем откликнувшимся.</p>]]></description>
			<author><![CDATA[null@example.com (Arg)]]></author>
			<pubDate>Thu, 09 Aug 2012 08:15:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62569#p62569</guid>
		</item>
	</channel>
</rss>
