找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20501|回复: 4

[其他] 批处理if errorlevel能否在for循环中使用?

[复制链接]
发表于 2022-3-5 19:30:33 | 显示全部楼层 |阅读模式
setlocal enabledelayedexpansion

set z=Word Excel PowerPoint Access Groove Lync OneDrive OneNote Outlook Publisher Teams

for %%k in (%z% i) do set %%k=0

choice /n /c 123456789qw /m 请选择:
if errorlevel 11 set j=Teams&goto zj3
if errorlevel 10 set j=Publisher&goto zj3
if errorlevel 9 set j=Outlook&goto zj3
if errorlevel 8 set j=OneNote&goto zj3
if errorlevel 7 set j=OneDrive&goto zj3
if errorlevel 6 set j=Lync&goto zj3
if errorlevel 5 set j=Groove&goto zj3
if errorlevel 4 set j=Access&goto zj3
if errorlevel 3 set j=PowerPoint&goto zj3
if errorlevel 2 set j=Excel&goto zj3
if errorlevel 1 set j=Word&goto zj3

:zj3
if !%j%!==0 (set %j%=1
set /a i+=1) else (set %j%=0
set /a i-=1)


有没有可能在for循环把if errorlevel 1-11这个判断完成呢?
发表于 2022-3-5 20:01:19 | 显示全部楼层
本帖最后由 idwma 于 2022-3-5 21:14 编辑
  1. setlocal enabledelayedexpansion

  2. set z=Word Excel PowerPoint Access Groove Lync OneDrive OneNote Outlook Publisher Teams

  3. for %%k in (%z% i) do set %%k=0

  4. choice /n /c 123456789qw /m 请选择:
  5. set a=%errorlevel:10=:%
  6. set a=%a:11=;%
  7. for /f "tokens=1-11" %%1 in ("%z%") do set j=%%%a%&goto zj3

  8. :zj3
  9. if !%j%!==0 (set %j%=1
  10. set /a i+=1) else (set %j%=0
  11. set /a i-=1)
复制代码
 楼主| 发表于 2022-3-5 20:37:18 | 显示全部楼层
回复 2# idwma


set errorlevel=%errorlevel:10=:%
set errorlevel=%errorlevel:11=;%
这两句删掉,1-9才能正常使用,但10和11不正常
 楼主| 发表于 2022-3-5 23:16:13 | 显示全部楼层
回复 2# idwma


    可以运行了,谢谢
但就是看不懂这两句
set a=%errorlevel:10=:%
set a=%a:11=;%
万一我还来个12、13什么的,怎么弄
发表于 2022-3-6 12:21:50 | 显示全部楼层
回复 4# li495388759
  1. setlocal enabledelayedexpansion

  2. set z=Word Excel PowerPoint Access Groove Lync OneDrive OneNote Outlook Publisher Teams

  3. for %%k in (%z% i) do (
  4. set /a a+=1
  5. set !a!=%%k
  6. set %%k=0
  7. )
  8. choice /n /c 123456789qw /m 请选择:
  9. set j=!%errorlevel%!&goto zj3

  10. :zj3
  11. if !%j%!==0 (set %j%=1
  12. set /a i+=1) else (set %j%=0
  13. set /a i-=1)
复制代码

评分

参与人数 1技术 +1 收起 理由
li495388759 + 1 感谢给帖子标题标注[已解决]字样

查看全部评分

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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 07:19 , Processed in 0.016744 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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