无忧启动论坛

标题: 批处理中::符号的困惑 [打印本页]

作者: 807979023    时间: 2018-1-9 09:03
标题: 批处理中::符号的困惑
本帖最后由 807979023 于 2018-1-9 09:05 编辑

批处理1运行失败,批处理2运行成功,这是什么原因呢?

1.bat:
  1. set r=1
  2. if "%r%" == "1" (
  3. dir d:
  4. :: d盘目录
  5. )
  6. pause
复制代码


2.bat:
  1. set r=1
  2. if "%r%" == "1" (
  3. :: d盘目录
  4. dir d:
  5. )
  6. pause
复制代码

作者: 窄口牛    时间: 2018-1-9 10:07
本帖最后由 窄口牛 于 2018-1-9 10:08 编辑

dir d:\
作者: nttwqz    时间: 2018-1-9 10:14
:: 注释,回显开启时也不显示
rem 注释,回显关闭时不显示,开启时显示
作者: 807979023    时间: 2018-1-9 11:56
谢谢回复
1.bat 运行后立即退出,並未执行dir d:和pause。改dir d:\ 也不行。
比如批处理3运行失败,並未新建目录111。
将::改为rem后能正常运行,看来::没有rem好用。

3.bat:
  1. set r=1
  2. if "%r%" == "1" (
  3. md 111
  4. :: 新建目录
  5. )
复制代码

作者: chishingchan    时间: 2018-1-9 12:54
:: 是一个欺骗性的注释语句!这里的第二个冒号是段落的名称。一般这样的段落需要CALL来调用。
不知道解释的对不对!
作者: 窄口牛    时间: 2018-1-9 13:06
嗯,最好还是老老实实用rem,这个双冒号应该来自linuxer的操作,因为linux里#。
作者: 807979023    时间: 2018-1-9 13:24
chishingchan 发表于 2018-1-9 12:54
:: 是一个欺骗性的注释语句!这里的第二个冒号是段落的名称。一般这样的段落需要CALL来调用。
不知道解释 ...

还是想不通,2.bat能运行,语句与1.bat完全相同,只是::的位置不同。
作者: icevan    时间: 2018-1-10 21:31
if "%r%" == "1" (dir d:&:: d盘目录)
if "%r%" == "1" (:: d盘目录&dir d:)
个人觉得都不能正常运行才对。
至于第二个能运行我猜是因为批处理解释的时候发现你的IF语句有问题根本没执行,
跳过IF后 下一句遇到一个标签“:” 也跳过。然后执行了dir。

至于REM本来就是一个命令,而:是一个跳转的标签符号。

还有注释的话最好不要在()里面。好像批处理里就没有注释的命令。
那些REM : 只是变通的方法。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3