<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7073&amp;type=atom" />
	<updated>2012-04-09T19:34:37Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7073</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59074#p59074" />
			<content type="html"><![CDATA[<p>Сам разобрался. В цикле For переменная %%i, а в set и if вызывалась %%I. Оказывается строчные и прописные имена переменных в командном файле различны. Не знал.</p>]]></content>
			<author>
				<name><![CDATA[Kot_Begimot]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27838</uri>
			</author>
			<updated>2012-04-09T19:34:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59074#p59074</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59071#p59071" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>%PATH:~0,-1%</code></pre></div><p>::извлечет все символы переменной PATH, за исключением 1-го последнего.</p><p>А в этом случае не проходит <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" />:</p><div class="codebox"><pre><code>for /l %%i in (1,1,9) do if defined REMOVABLE%%I (
if &quot;!REMOVABLE%%I:~-1,1!&quot;==&quot;\&quot; set REMOVABLE%%I=!REMOVABLE%%I:~0,-1!</code></pre></div><p>set выдает ошибку.</p>]]></content>
			<author>
				<name><![CDATA[Kot_Begimot]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27838</uri>
			</author>
			<updated>2012-04-09T18:26:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59071#p59071</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59066#p59066" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>for /l %%i in (1,1,9) do if exist !Fixdisk%%i!\filename.ext set sDisk=!Fixdisk%%i! &amp;goto :go
:go</code></pre></div>]]></content>
			<author>
				<name><![CDATA[!k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26608</uri>
			</author>
			<updated>2012-04-09T17:51:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59066#p59066</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59061#p59061" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>!k пишет:</cite><blockquote><div class="codebox"><pre><code>setlocal enabledelayedexpansion
for /l %%i in (1,1,9) do if exist !Fixdisk%%i!\filename.ext set sDisk=!Fixdisk%%i!
set sDisk</code></pre></div></blockquote></div><p>Здесь цитирование необходимо.<br />А как прервать цикл, чтобы он не крутил до 9, если файл уже нашелся при значении %%i, например там 2 или 3?</p>]]></content>
			<author>
				<name><![CDATA[Kot_Begimot]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27838</uri>
			</author>
			<updated>2012-04-09T17:40:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59061#p59061</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59060#p59060" />
			<content type="html"><![CDATA[<p><span style="color: Green"><strong>Kot_Begimot</strong>, <a href="http://forum.script-coding.com/viewtopic.php?pid=59054#p59054">второй</a> и последний раз говорю:</span><br /></p><div class="quotebox"><blockquote><p><span style="color: Green">Избегайте излишнего цитирования.</span></p></blockquote></div><p><span style="color: Green">Я поправил Ваш пост</span></p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-04-09T17:26:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59060#p59060</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59058#p59058" />
			<content type="html"><![CDATA[<p><strong>!k</strong>, супер! То что надо! Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Kot_Begimot]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27838</uri>
			</author>
			<updated>2012-04-09T17:20:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59058#p59058</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59056#p59056" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>enabledelayedexpansion</p></blockquote></div><p>а не используете</p><div class="codebox"><pre><code>setlocal enabledelayedexpansion
for /l %%i in (1,1,9) do if exist !Fixdisk%%i!\filename.ext set sDisk=!Fixdisk%%i!
set sDisk</code></pre></div>]]></content>
			<author>
				<name><![CDATA[!k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26608</uri>
			</author>
			<updated>2012-04-09T16:58:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59056#p59056</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59054#p59054" />
			<content type="html"><![CDATA[<p><span style="color: Green">Избегайте излишнего цитирования. Я поправил Ваш пост.</span></p><div class="quotebox"><cite>Kot_Begimot пишет:</cite><blockquote><p>Только до меня было так сделано, что программа проверяет все логические диски системы и устанавливает следующие переменные в зависимости от типа диска:</p></blockquote></div><p>Вы не дали комментариев по:<br /></p><div class="quotebox"><blockquote><p>Если по условиям задачи допустимо использование «wmic.exe» или «fsutil.exe», то можно и не задавать перечень дисков «ручками».</p></blockquote></div><p>Ибо в этом случае нет нужды устанавливать переменные окружения:<br /></p><div class="codebox"><pre><code>wmic.exe LogicalDisk where &quot;DriveType = &#039;…&#039;&quot;</code></pre></div><div class="quotebox"><cite>Kot_Begimot пишет:</cite><blockquote><p>Надо работать с этими уже установленными переменными окружения.</p></blockquote></div><p>Не надо.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-04-09T16:50:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59054#p59054</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59052#p59052" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Для вычислений предназначена форма команды «set /a».</p><p>Подозреваю, что, то, что Вы хотите получить, делается гораздо проще:<br />…</p></blockquote></div><p>Спасибо за ответ. Да можно и так. Только до меня было так сделано, что программа проверяет все логические диски системы и устанавливает следующие переменные в зависимости от типа диска:</p><div class="codebox"><pre><code>set Fixed1=C:
set Fixed2=D:
set Fixed3=E:
...
set Removable1=M:
set Removable2=N:
...
set CDROM1=X:
set CDROM2=Y:</code></pre></div><p>Поэтому нет смысла снова перебирать весь алфавит. Надо работать с этими уже установленными переменными окружения.</p>]]></content>
			<author>
				<name><![CDATA[Kot_Begimot]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27838</uri>
			</author>
			<updated>2012-04-09T16:05:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59052#p59052</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59051#p59051" />
			<content type="html"><![CDATA[<p>Для вычислений предназначена форма команды «set /a».</p><p>Подозреваю, что, то, что Вы хотите получить, делается гораздо проще:<br /></p><div class="codebox"><pre><code>@echo off
setlocal enableextensions enabledelayedexpansion

for %%i in (c d e f g h) do if exist &quot;%%i:\filename.ext&quot; if not defined sDisk set sDisk=%%i:

if defined sDisk (
    echo [%sDisk%]
) else (
    echo Not found
)

endlocal
exit /b 0</code></pre></div><p>Если по условиям задачи допустимо использование «wmic.exe» или «fsutil.exe», то можно и не задавать перечень дисков «ручками».</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-04-09T15:47:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59051#p59051</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59050#p59050" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>for /l %%i in (1,1,9) do if exist %Fixdisk%%%i\filename.ext set %Fixdisk%%i%=%Fixdisk%%i%\</code></pre></div><p>Этот мой код к сожалению не работает, поэтому прошу помощи уважаемых участников форума:</p><p>Вот еще пример. Нормальный вызов переменной:</p><div class="codebox"><pre><code>set Fixdisk1=%Fixdisk2%</code></pre></div><p>так работает</p><p>а как через цикл for, где переменная %%i должна стать частью имени переменной:</p><div class="codebox"><pre><code>set Fixdisk%%i=%Fixdisk%%i+1%</code></pre></div><p>так нет. А как?</p>]]></content>
			<author>
				<name><![CDATA[Kot_Begimot]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27838</uri>
			</author>
			<updated>2012-04-09T15:20:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59050#p59050</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59049#p59049" />
			<content type="html"><![CDATA[<p><span style="color: Green">Я добавил префикс «CMD/BAT: » к заголовку темы и обрамил код <a href="http://forum.script-coding.com/help.php#bbcode">тэгом «code»</a>.</span></p><p>И что?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-04-09T15:06:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59049#p59049</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Переменная цикла For и имена переменных окружения...]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59048#p59048" />
			<content type="html"><![CDATA[<p>Есть несколько переменных окружения:<br /></p><div class="codebox"><pre><code>set Fixdisk1=C:
set Fixdisk2=D:
set Fixdisk3=E:
set Fixdisk4=F:
set Fixdisk5=G:
set Fixdisk6=H:
set Fixdisk7=I:
set Fixdisk8=J:
...</code></pre></div><p>и т.д. в зависимости от количества дисков</p><br /><p>Теперь в cmd-командном файле нужно обращаться к именнам переменных через цикл for. Типа:</p><div class="codebox"><pre><code>for /l %%i in (1,1,9) do if exist %Fixdisk%%i%\filename.ext set %Fixdisk%%i%=%Fixdisk%%i%\</code></pre></div><p>Что то типа этого. Только этот мой код, к сожалению, не работает.</p><p>Заранее спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Kot_Begimot]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27838</uri>
			</author>
			<updated>2012-04-09T14:40:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59048#p59048</id>
		</entry>
</feed>
