Board logo

标题: [文本处理] 批处理判断系统版本的变量延迟命令是否可以去掉? [打印本页]

作者: 360bbs    时间: 2010-10-24 21:11     标题: 批处理判断系统版本的变量延迟命令是否可以去掉?

@echo off&setlocal enabledelayedexpansion
这个命令加在判断系统版本的代码上面,我想问一下,这一句是否可以去掉?去掉后对批处理的运行有没有影响呢?我暂时还没发现有影响,因为我不是很懂

加上了这个命令,下面有些echo命令,就会echo处于关闭状态了
作者: 360bbs    时间: 2010-10-25 08:36

setlocal enabledelayedexpansion的意思总是弄不明白,知道是延迟的意思,但是还是不明白怎么才算延迟,所以就不知道吧@echo off&setlocal enabledelayedexpansion
去掉对批处理的运行有什么影响
作者: Batcher    时间: 2010-10-25 11:37

多看教程:批处理中的变量延迟扩展、变量嵌套
http://bbs.bathome.net/thread-2899-1-1.html
作者: wc726842270    时间: 2010-10-25 13:34

P处理的的执行方式是“自上而下,逐条处理”注意这里是“条”而非“行”。
而setlocal enabledelayedexpansion的用处主要体现在复合语句中,例如:
FOR,IF等引导的语句,当然&,&&,|等连接的也是。
关于你所问的举个例子来说明一下吧,如:
  1. set a=b&echo %a%
复制代码
它所显示的是%a%,并不是我们想要的"b"
  1. setlocal enabledelayedexpansion
  2. set a=b&echo !a!
复制代码
此句中的%a%一定要换为!a!,因为它是你的目的,且在复合语句中(也就是说如果不在复合句中可以是%a%,可以灵活运用),如果你只知道这些可能还是不明白,还有预处理机制
关于预处理机制http://www.bathome.net/viewthrea ... 6%C0%ED%BB%FA%D6%C6
以上是我个人的理解,如有不对,请指出,谢谢




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