dos setlocal

来源:互联网 发布:淘宝怎么绑定手机号码 编辑:程序博客网 时间:2024/06/03 06:22

开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后
所做的环境改动只限于批处理文件。要还原原先的设置,必须执
行 ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个
尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。

SETLOCAL

如果命令扩展被启用,SETLOCAL 会如下改变:

SETLOCAL 批命令现在可以接受可选参数:
        ENABLEEXTENSIONS / DISABLEEXTENSIONS
            启用或禁用命令处理器扩展。这些
            参数比 CMD /E:ON 或 /E:OFF
            开关有优先权。请参阅 CMD /? 获取详细信息。
        ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
            启用或禁用延缓环境变量
            扩展。这些参数比 CMD
            /V:ON 或 /V:OFF 开关有优先权。请参阅 CMD /? 获取详细信息。
无论在 SETLOCAL 命令之前它们的设置是什么,这些修改会一直
保留到匹配的 ENDLOCAL 命令。

如果有一个参数,
SETLOCAL 命令将设置 ERRORLEVEL 的值。如果有两个有效参数中的一个,
该值则为零。
用下列技巧,您可以在批脚本中
使用这个来决定扩展是否可用:

    VERIFY OTHER 2>nul
    SETLOCAL ENABLEEXTENSIONS
    IF ERRORLEVEL 1 echo Unable to enable extensions

这个方法之所以有效,是因为在 CMD.EXE 的旧版本上,SETLOCAL
未设置 ERRORLEVEL 值。具有不正确参数的 VERIFY 命令将
ERRORLEVEL 值初始化成非零值。

原创粉丝点击