[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
或者干脆把行尾的^理解为批处理中的续行标志。大部分语言、脚本中,为了避免单行代码过长,都会定义自己的续行标志(但不一定是同一个字符,比如VBS中的续行符就是下划线),遇到这个标志,解释器或者编译器就会知道下面的一行代码和本行代码应该连在一起。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 15楼 的帖子

不同的系统,在具体实现上有所不同,有的只是一个OD,有的只是一个OA。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11楼 的帖子

好,多谢,你的建议我采纳了。请问下什么是命令行解释器?还有啊,我直接在CMD窗口里输入如下代码
  1. echo ^
复制代码
回车后显示结果是“more ?”
这到底怎么回事呢?不太理解。难道也是把回车转义了?那么转义之后为什么这样显示呢?如果代码是
  1. echo ^
  2. pause
复制代码
的话,回车被转义,直接连接pause命令,如果^后面不跟字母,回车被转义的话没什么可以连接的,为什么结果是“more ?”?

TOP

回复 18楼 的帖子

1、google搜索“什么是命令行解释器”
2、回车后为什么显示结果是“more ?”,因为命令行解释器遇到了续行符,它认为你的命令还没有输入完,所以让你接着输入。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 19楼 的帖子

多谢,现在基本清晰了。还有最后一问,之前namejm说echo %num^%先变量扩展,讲num^解释成变量,然后变为num,说这里的^也是转义,可是它转义的是什么字符呢?可以没有字符的么?

TOP

回复 20楼 的帖子

我跟他的观点不同,具体请看12楼。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 namejm 于 2009-3-23 21:09 发表

  2、echo ^%num^% 的时候,先匹配百分号对,被识别为是在做变量引用,引用的变量是 num^ ;但是,这里的 ^ 它本身是转义字符,从而 num^ 将转化为 num ——也就是在说,在做变量引用的时候,变量名先被识别为 num^,进而又被识别为 num。 ...


经测试,两个百分号中间的字符不会再被处理:
  1. @echo off
  2. set num^^=2009
  3. set num=09
  4. echo ^%num^%
  5. pause
复制代码
结果是 2009

[ 本帖最后由 tireless 于 2009-3-24 09:58 编辑 ]

TOP

回复 22楼 的帖子

多谢tireless点睛之笔,我自己测试了,在两个各百分号之间的的特殊字符不会当作特殊字符处理,而是当作组成变量名的普通字符来处理,如:
  1. @echo off
  2. set num^^=2009
  3. set num=09
  4. echo ^%num^^%
  5. pause
  6. pause
复制代码

显示结果为pause。
所以要显示变量num^^的值,必须在%%之间写成num^。代码2因为中间写了两个^致使num^^被识别为未定义字符,故echo ^%num^^%被解释成echo ^,^做连字符处理连接pause。
至此,水落石出,尘埃落定。多谢所有前辈指点迷津。
整个帖子会重新整理到1楼,方便有同样疑惑的新手查看。

[ 本帖最后由 Lumiere 于 2009-3-24 10:25 编辑 ]
Still with wax

TOP

原帖由 Lumiere 于 2009-3-24 10:17 发表
所以要显示变量num^^的值,必须在%%之间写成num^。...

不是,就要写 num^^。要设置 num^^ 的变量要这样:set num^^^^=2009

TOP

回复 24楼 的帖子

多谢热心讲解,我知道那样设置,我说的不是那个问题了,呵呵。真的谢谢你。
Still with wax

TOP

可是你这句话不对啊:
所以要显示变量num^^的值,必须在%%之间写成num^。

是否是笔误?我觉得你想表达的是:
所以要显示变量num^的值,必须在%%之间写成num^,而不要写成 num^^ 来指望它变成 num^。

[ 本帖最后由 tireless 于 2009-3-24 10:58 编辑 ]

TOP

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

原帖由 Batcher 于 2009-3-23 20:02 发表
^是转义字符,而不是逃逸字符吧?逃逸字符是%啊。楼上笔误?
 


Google 的翻译结果:

escape 逃逸
escape character 转义字符

逃逸=转义?

TOP

回复 28楼 的帖子

我觉得翻译成中文,%是逃逸,^是转义。
在字面意思上更容易理解些。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表