Показать полную графическую версию : [решено] %errorlevel% внутри цикла всегда 0
apozlevich
18-10-2012, 10:00
Проблема:
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. В чем дело?
...переделав все в две метки (как советуют тут (http://stackoverflow.com/questions/7139025/batch-errorlevel-returns-0-in-for-loop)) получаю ошибку "непредвиденное появление: call" сразу же в первой строке:
for /f "skip=1 tokens=1,2 delims=|" %%i in (%1) do call :for1 %%i %%j
В упор не вижу ошибку. Люди, помогите.
Petya V4sechkin
18-10-2012, 10:07
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 - позднее связывание.
apozlevich
18-10-2012, 10:16
А к переменным, заключенным в !! можно применять разные :~0,-1?
А к переменным, заключенным в !! можно применять разные :~0,-1? »
Конечно.
Instant_SR
22-11-2013, 17:43
Подниму тему...
есть листинг:
@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% на наличие\отсутствие ключа в реестре?
Instant_SR, в данном случае Вы видите errorlevel от команды «for /f».
как заставить реагировать %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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.