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

[其他] 【已解决】批处理setlocal学习时,第二段for循环报错

[复制链接]
发表于 2025-5-6 08:21:15 | 显示全部楼层 |阅读模式
这是源码
  1. @echo off
  2. chcp 65001>nul
  3. echo 这次主要演示的是对比有无延迟扩展
  4. set var=Initial
  5. for /l %%i in (1,1,3) do (
  6.         echo off &echo %%i
  7.         set var=New_%%i
  8.         echo %var%
  9. rem 将会输出Initial,因为没有启用延迟变量,不会进行动态更新
  10. )
  11. setlocal enabledelayedexpansion
  12. echo rem 启用延迟变量,会动态更新 !var!
  13. for /l %%j in (1,1,3) do (
  14.         set var=New_%%j
  15.         echo !var!
  16.         :: 正确输出 new 1,new2,new3
  17. )
  18. endlocal
  19. pause
复制代码
运行的时候,在echo rem.........后第二段开始就报错说:“) was unexpected at this time.”
报错说:“这个时候不应该有括号”
我自己找了半天没有发现哪里不对的
这段bat是我在学习的时候为了方便自己理解setlocal的用法而写的
初学者

评分

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

查看全部评分

发表于 2025-5-6 09:14:24 | 显示全部楼层
回复 1# 没有名字9

第二个循环中的注释行前缀::改为rem即可。
 楼主| 发表于 2025-5-6 09:41:38 | 显示全部楼层
回复 2# aloha20200628


    修改完之后能运行了,但是我想知道为什么::不行,能否告知下,谢谢了
发表于 2025-5-6 10:59:01 | 显示全部楼层
回复 3# 没有名字9

cmd的注释符号只有一个就是 REM,这是最安全的注释方式
::并不是标准的注释符号,虽然一般情况也能起到注释的作用,但不安全,尤其在括号里面

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2025-5-6 12:14:29 | 显示全部楼层
 楼主| 发表于 2025-5-6 12:55:41 | 显示全部楼层
回复 4# flashercs


    ok,了解了
 楼主| 发表于 2025-5-6 12:56:12 | 显示全部楼层
回复 5# Five66


    好的,我确实也有这个问题,谢谢科普
发表于 2025-5-9 22:12:12 | 显示全部楼层
根据我的经验,当标签在括号中且为括号中最后一条语句时就会出错,猜测可能是标签解析影响了括号的匹配,有空可以研究一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:08 , Processed in 0.018921 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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