2014-02-10 3 views
0

Я пишу командный файл, и я хочу запустить цикл for, который устанавливает его первое значение переменной. Мне нужно только первое значение команды, но я не мог найти другого способа сделать это. Способ, которым я его настроил, - это цикл for, а затем оператор do, который говорит, что если переменная не установлена, задайте переменную. Проблема заключается в том, когда это выполняется, цикл использует переменную unset каждый раз вместо того, чтобы рассматривать ее как установленную после первого цикла.Batch For loop для получения первого значения

Например, мой, если говорит if "%foo%"=="" set foo=%%i и вывод выглядит следующим образом if "" == "" set foo="hello" следующего цикла по-прежнему будет сказать if "" == "" set foo="bar"

Есть ли способ обойти это? Я попытался установить задержку расширения, и это не помогло. Я также открыт для других способов, которые дадут мне только первое значение из команды.

+0

Пожалуйста, поставьте здесь то, что вы пытались до сих пор. –

+0

Отложенное расширение сработало бы, если бы вы включили его, и изменили '% foo%' на '! Foo!' – dbenham

+0

. Ответ ниже работал. Я пробовал с задержкой расширения! но мне, возможно, пришлось использовать больше управляющих символов. – TBrenner

ответ

2
set "foo=" 
for /f %%i in (....) do if not defined foo set "foo=%%i" 

Или, если вы можете добавить ярлык

for /f %%i in (....) do set "foo=%%i" & goto :done 
:done 
+0

Это именно то, что мне нужно. Спасибо. – TBrenner