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

[其他] 批处理for循环体内使用双冒号::做注释导致后续的命令语句失效是什么原因

[复制链接]
发表于 2017-4-27 14:17:04 | 显示全部楼层 |阅读模式
【语法】<nul下一行如果以::开头的问题
最近实验发现一个小问题,不知为何,请高人指点。
---------------------------------------------------------------------------
setlocal enabledelayedexpansion
for /l %%i in (1,1,6) do (
  set var=........%%i
:: 一行可以显示多个数字
  set /p print=!var!<nul
@rem 一行只能显示一个数字
@rem   echo !var:~-4!
  set /a line=%%i%%3
  if "!line!"=="0" echo.
)
---------------------------------------------------------------------------
代码中红色的部分如果用::来代替,代码就会提示错误:
难道@rem和::会有不同吗?

另外,set /p print=!var!<nul这句无法显示var里的空格,目前暂时用“.......”来代替,请问有其他办法吗?

评分

参与人数 1PB -2 收起 理由
pcl_test -2 勿发笼统的标题

查看全部评分

发表于 2017-4-27 16:20:36 | 显示全部楼层
( ) 组成的代码块之内不宜出现标签(::实际上是无效标签),除非你对规则非常了解,否则很容易出现语法错误

set /p 提示语中,前后空格在 win7 以上是被忽略的
发表于 2017-4-27 19:59:21 | 显示全部楼层
本帖最后由 老刘1号 于 2017-4-27 20:06 编辑

set/p"=   2333"<nul
试试这样行不行
手头没WIN7
for里不能有标签
::也算标签,只不过不能调用罢了
 楼主| 发表于 2017-5-1 16:45:17 | 显示全部楼层
谢谢楼上两位指点,明白了
发表于 2024-3-16 15:40:58 | 显示全部楼层
回复 3# 老刘1号


    http://www.bathome.net/thread-68636-1-1.html 我这也有这个问题,win10环境,代码里所有::修改成rem 好了,按照您回复的,我在for循环中加了::并且没有任何空格保存运行,结果是没有报错,是win10 对::的适应改动了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 04:00 , Processed in 0.016372 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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