Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] %errorlevel% внутри цикла всегда 0

Ответить
Настройки темы
CMD/BAT - [решено] %errorlevel% внутри цикла всегда 0

Аватара для apozlevich

Ветеран


Автор проектов


Сообщения: 1039
Благодарности: 180


Конфигурация

Профиль | Отправить PM | Цитировать


Проблема:

Код: Выделить весь код
for /f "skip=1 tokens=1,2 delims=|" %%i in (%1) do (
     for /f "delims=" %%k in (%%i.txt) do (
          something.exe %%k %%i
          echo %errorlevel%
     )
)
Выводит 0, а просто
Код: Выделить весь код
something.exe %%k %%i
echo %errorlevel%
выводит 1. В чем дело?

...переделав все в две метки (как советуют тут) получаю ошибку "непредвиденное появление: call" сразу же в первой строке:
Код: Выделить весь код
for /f "skip=1 tokens=1,2 delims=|" %%i in (%1) do call :for1 %%i %%j
В упор не вижу ошибку. Люди, помогите.

Отправлено: 10:00, 18-10-2012

 


Moderator


Сообщения: 52213
Благодарности: 15087

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=|" %%i in (%1) do (
     for /f "delims=" %%k in (%%i.txt) do (
          something.exe %%k %%i
          echo !errorlevel!
     )
)
EnableDelayedExpansion - позднее связывание.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:07, 18-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для apozlevich

Ветеран


Автор проектов


Сообщения: 1039
Благодарности: 180

Профиль | Отправить PM | Цитировать


А к переменным, заключенным в !! можно применять разные :~0,-1?

-------
echo 127.0.0.1 google.ru >> %systemroot%\system32\drivers\etc\hosts && ipconfig /flushdns && echo Я ничего не трогал, оно само!


Отправлено: 10:16, 18-10-2012 | #3


Ветеран


Contributor


Сообщения: 27537
Благодарности: 8050

Профиль | Отправить PM | Цитировать


Цитата apozlevich:
А к переменным, заключенным в !! можно применять разные :~0,-1? »
Конечно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:29, 18-10-2012 | #4


Новый участник


Сообщения: 26
Благодарности: 1

Профиль | Отправить PM | Цитировать


Подниму тему...
есть листинг:
Код: Выделить весь код
@ECHO off
@COLOR 4
@CHCP 866
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
CLS
:Start
For /F "Tokens=2*" %%I In ('Reg Query "HKCU\Software\Microsoft\Shared\UcClient" /V ConfigurationMode') Do SET key=%%J
IF %ERRORLEVEL%==0 (
	echo 1
	pause
)
echo 0
pause
просто ищет по реестру ключ...
ключ есть - %errorlevel%=0
ключа нет- %errorlevel%=0 но в консоли пишет, что "ошибка-мол, нет такого" значит место указано верно

как заставить реагировать %errorlevel% на наличие\отсутствие ключа в реестре?

Отправлено: 17:43, 22-11-2013 | #5


Ветеран


Contributor


Сообщения: 27537
Благодарности: 8050

Профиль | Отправить PM | Цитировать


Instant_SR, в данном случае Вы видите errorlevel от команды «for /f».

Цитата Instant_SR:
как заставить реагировать %errorlevel% на наличие\отсутствие ключа в реестре? »
Не нужно.

Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2*" %%i in (
	`reg.exe query "HKCU\Software\Microsoft\Shared\UcClient" /v "ConfigurationMode" 2^>nul ^| find.exe /i "ConfigurationMode"`
) do set sConfigurationMode=%%j

if defined sConfigurationMode (
	echo ConfigurationMode: [%sConfigurationMode%].
) else (
	echo Parameter not exists.
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:55, 22-11-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] %errorlevel% внутри цикла всегда 0

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как работать с переменной внутри цикла FOR? alex_past Скриптовые языки администрирования Windows 42 28-11-2018 16:19
CMD/BAT - [решено] Условия внутри цикла for blackmane Скриптовые языки администрирования Windows 4 02-08-2012 10:01
BSOD - Замучил синий екран смерти (см внутри) BCCode: a Код языка: 1049 + внутри доп вопрос Alexeydt Тест-форум 2 14-04-2012 16:44
CMD/BAT - [решено] вопрос по ping и команде if %errorlevel% zion87 Скриптовые языки администрирования Windows 1 29-12-2011 02:57
Cmd Параметр ERRORLEVEL storm2005 Microsoft Windows NT/2000/2003 1 30-03-2007 18:49




 
Переход