<?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="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5276&amp;type=atom" />
	<updated>2010-12-12T18:12:05Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5276</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Не работает счётчик]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42839#p42839" />
			<content type="html"><![CDATA[<p>Вы не правы. Работает:<br /></p><div class="codebox"><pre><code>@echo off
Set /a N = 0
for /r .\Dir\ %%i in (*.txt) do (
set /a N = N + 1
echo %N%:%%~ni
)
echo %N%</code></pre></div><p>Дело в том, что внутри скобок раскрытие переменных происходит в момент входа в них (то бишь, однократно при входе). Отсюда и будет «0:…», «0:…» …</p><p>Вам нужно использовать отложенное раскрытие переменных, например, так:<br /></p><div class="codebox"><pre><code>@echo off
setlocal enableextensions enabledelayedexpansion

set /a n = 0

for /r &quot;.\Dir\&quot; %%i in (*.txt) do (
    set /a n = n + 1
    echo !n!:%%~ni
)

endlocal
exit /b 0</code></pre></div><p>Либо вызывать как процедуру:<br /></p><div class="codebox"><pre><code>@echo off
setlocal

set /a n = 0

for /r &quot;.\Dir\&quot; %%i in (*.txt) do (
    set /a n = n + 1
    call echo %%n%%:%%~ni
)

endlocal
exit /b 0</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-12-12T18:12:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42839#p42839</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Не работает счётчик]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42835#p42835" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>@echo off
Set N=0
for /r .\Dir\ %%i in (*.txt) do (
set /a N = N + 1
echo %N%:%%~ni
)</code></pre></div><p>Не работает счётчик &quot;set /a N = N + 1&quot; не работает почему что я не так делаю?</p>]]></content>
			<author>
				<name><![CDATA[Егорыч]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26520</uri>
			</author>
			<updated>2010-12-12T15:27:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42835#p42835</id>
		</entry>
</feed>
