找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: hlowld

[分享] 批处理循环中实现break和continue

  [复制链接]
发表于 2026-3-4 08:19:54 | 显示全部楼层
来学习一下,感谢!
回复

使用道具 举报

发表于 2026-3-7 12:46:18 | 显示全部楼层
本帖最后由 redyear2026 于 2026-3-7 12:52 编辑

    关于本帖涉及的 '系统命令产生的返回值' 问题,给几点用法心得,仅供批处理脚本造码时的 ‘避雷’ 参考...
    windows 系统命令产生的 '错误返回值',至少有三种典型用法如下
    一。两个流程链接符 &&,||
    二者对返回值的处理方式:&& 执行返回值为零的链接代码,|| 执行返回值不为零的链接代码。简言之,二者可被用于只须判断零或非零两个不同返回值的决策场合,示例代码如下,其中 find ... 用法分别会产生返回值为 0=发现 或 1=未发现
  1. @echo off
  2. echo,xyz|find /i "y">nul && echo,发现字符 y || echo,未发现字符 y
  3. echo,abc|find /i "y">nul && echo,发现字符 y || echo,未发现字符 y
  4. pause&exit/b
复制代码

    二。语法关键字 errorlevel
   其对返回值的处理方式:判断返回值是否大于或等于一个设定值。因此用其判断返回值的代码须遵循 '从高值到低值' 的匹配原则,示例代码如下,其中 find ... 分别会产生返回值为 0=发现 或 1=未发现
  1. @echo off
  2. echo,xyz|find /i "y">nul & if errorlevel 1 (echo,未发现字符 y) else (echo,发现字符 y)
  3. echo,abc|find /i "y">nul & if errorlevel 1 (echo,未发现字符 y) else (echo,发现字符 y)
  4. pause&exit/b
复制代码
    关键字 errorlevel 用法特别,但在复合语块如 if,for 内部若不能采用延迟变量时,其仍是有效的备用选项,示例代码如下,其中 xcopy ... 的错误用法会产生返回值=4
  1. @echo off & set "a=1"
  2. if defined a (
  3.    xcopy "a/b" "x/y">nul 2>nul               
  4.    if errorlevel 4 (echo,找不到文件) else if errorlevel 0 (echo,成功)
  5. )
  6. pause&exit/b
复制代码
    三。系统变量 %errorlevel%
    其对返回值的处理方式:仅保存最新执行命令产生的返回值。在批处理代码中可用于各种逻辑比对,但其在复合语块中的使用须先开启变量延迟 setlocal enabledelayedexpansion,即引用格式为 !errorlevel!,示例代码如下,其中 xcopy ... 的错误用法会产生返回值=4
    A:用于复合语块
  1. @echo off
  2. xcopy "a/b" "x/y">nul 2>nul               
  3. if !errorlevel! equ 4 (echo,找不到文件) else if !errorlevel! equ 0 (echo,成功)
  4. pause&exit/b
复制代码
    B:用于复合语块
  1. @echo off & set "a=1"
  2. if defined a (
  3.    setlocal enabledelayedexpansion
  4.    xcopy "a/b" "x/y">nul 2>nul               
  5.    if !errorlevel! equ 4 (echo,找不到文件) else if !errorlevel! equ 0 (echo,成功)
  6.    endlocal
  7. )
  8. pause&exit/b
复制代码
    四。以上三种用法如何择取,本人倾向于多采用系统变量 %errorlevel% 或 !errorlevel!,其用法最灵活;但在复合语块中若不想开启变量延迟,则可退其次选用语法关键字 errorlevel;当只须判断 成(0)与否(≠0) 两值结果时,选用流程链接符 &&,|| 可有助于代码轻量化





回复

使用道具 举报

发表于 昨天 19:18 | 显示全部楼层
感谢分享..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-3-18 08:53

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表