返回错误级别批处理

时间:2013-04-23 13:32:59

标签: batch-file registry errorlevel

我有这个脚本,脚本运行正常。除了一部分。我试图在每次查询后返回错误级别以确定我的错误级别。我知道我的语法有问题请帮助。

@echo off
    setlocal enabledelayedexpansion
set "ports=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports"

rem get only the first token of each line of "reg query"
for /f %%I in (
    'reg query "%ports%"'
) do (
IF !errorlevel!==0  echo(%%I | findstr /i "c:\\convertdoc\\output\\silentprinttemp\\.*\.ps" >NUL && (
        rem (if "findstr" didn't exit with an abnormal error code)
        echo Deleting item %%I
        ECHO [PW-MOD] reg delete "%ports%" /v "%%I" /f
    )
)

[由Dk 68 61 63 6b编辑回复评论] [重新编辑PW以加入折线并禁用可能具有破坏性的指令'reg delete']

1 个答案:

答案 0 :(得分:0)

help set中查找延迟扩展。它完全解释了你的问题。

要解决它,请使用

setlocal enabledelayedexpansion

然后!errorlevel!代替%errorlevel%

另一种选择是使用

if not errorlevel 1

(稍有不同的语义,可能与您的情况无关)。