[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

【语法】<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里的空格,目前暂时用“.......”来代替,请问有其他办法吗?
1

评分人数

回复 3# 老刘1号


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

TOP

谢谢楼上两位指点,明白了

TOP

本帖最后由 老刘1号 于 2017-4-27 20:06 编辑

set/p"=   2333"<nul
试试这样行不行
手头没WIN7
for里不能有标签
::也算标签,只不过不能调用罢了

TOP

( ) 组成的代码块之内不宜出现标签(::实际上是无效标签),除非你对规则非常了解,否则很容易出现语法错误

set /p 提示语中,前后空格在 win7 以上是被忽略的

TOP

返回列表