Board logo

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

作者: riscrisc    时间: 2017-4-27 14:17     标题: 批处理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里的空格,目前暂时用“.......”来代替,请问有其他办法吗?
作者: CrLf    时间: 2017-4-27 16:20

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

set /p 提示语中,前后空格在 win7 以上是被忽略的
作者: 老刘1号    时间: 2017-4-27 19:59

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

set/p"=   2333"<nul
试试这样行不行
手头没WIN7
for里不能有标签
::也算标签,只不过不能调用罢了
作者: riscrisc    时间: 2017-5-1 16:45

谢谢楼上两位指点,明白了
作者: GNGW    时间: 2024-3-16 15:40

回复 3# 老刘1号


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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2