无忧启动论坛

 找回密码
 注册
搜索
一次装机 终生领工资最纯净的「微PE装机优盘」UEPON大师作品★IDC大全★服务器租赁、托管★优惠促销★
可防勒索的强大数据备份恢复软件卡瑞飞系统和装机二合一超级U盘广告联系 QQ:184822951 微信:wuyouceo
查看: 287|回复: 4

[分享] 关于转移符号^在注释行中神奇问题一则

[复制链接]
发表于 2018-12-6 22:28:55 | 显示全部楼层 |阅读模式
先看一段简单到不能行的代码,乍看上去,应该能正确显示~!@#$%^,但实际上会显示ECHO 处于关闭状态。

  1. @echo off
  2. ::显示特殊符号:~!@#$%^
  3. set b="~!@#$%^"
  4. echo %b%
  5. pause
复制代码


Why?

以::开头的行都是注释,除了便于阅读者更容易理解之外,别无它用,不影响代码执行,内容应该也没有什么限制。

将set之后的行复制到cmd窗口能正确执行,到底是哪里出错了呢?


还是注释行!

因为特么的转移符号^在注释行末尾也是起作用的,也就是说注释行不能以^结尾,否则会继续生效进而转移掉末尾的回车,虽然不可见,虽然这是注释行,结果set那一行和注释行变成了一行注释,造成变量b没有被定义,自然也就无法显示变量b的值了。
发表于 2018-12-6 22:57:36 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2018-12-6 23:16:17 | 显示全部楼层
^符号是将后面跟着的1个字符无功能化。单冒号后面是跳转标签名称,双冒号等于将标签命名为冒号,没有被跳转的取巧而已。
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
@echo off
Setlocal enabledelayedexpansion

set b="~@#$%%^"
echo %b%
pause
叹号搞不定,注释不能有
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. ::显示符号:~!@#$%一个^^
  4. set b="~@#$%%^"
  5. echo %b%
  6. pause
复制代码

加注释就只能这样了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持本站|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2018-12-16 21:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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