标题: [文件操作] 批处理使用&连接两条命令和不使用&有何区别? [打印本页]
作者: lyonamstrong 时间: 2016-9-12 15:09 标题: 批处理使用&连接两条命令和不使用&有何区别?
本帖最后由 pcl_test 于 2016-9-12 19:41 编辑
setlocal enabledelayedexpansion
set a=1 & echo %a%答案是1
set a=1 echo %a%不回显
1请问不回显还是显示为空?我并没有echo off
2请问
set a=1 & echo %a%
和
set a=1
echo %a%
有区别吗?这里的&能理解成是回车吗?
请老师不吝赐教
作者: wskwfkbdn 时间: 2016-9-12 15:24
set是定义变量,上面使用&连接符是两条命令
作者: DiamondbacK 时间: 2016-9-12 15:26
解释器解释流程:- set a=1 & echo %a%
- ->
- set a=1 & echo
- 输出 (set 无输出,echo 有输出):
- ECHO 处于打开状态。
- 赋值:
- "%a%" == "1 "
复制代码
- set a=1 echo %a%
- ->
- set a=1 echo
- 无输出
- 赋值:
- "%a%" == "1 echo "
复制代码
- set a=1
- 无输出
- 赋值:
- "%a%" == "1"
-
- echo %a%
- ->
- echo 1
- 输出:
- 1
复制代码
是否回显,以及回显是什么,你可以自己测试。
作者: lyonamstrong 时间: 2016-9-12 15:27
本帖最后由 lyonamstrong 于 2016-9-12 15:36 编辑
回复 2# wskwfkbdn
如果是2条命令,那么请至问题2
这么说吧,
step1 & step2 & step3 etc
和
step1
step2
step3
etc
这两者有没有区别?&的硬性往下执行的作用在这里能体现吗?
作者: Batcher 时间: 2016-9-12 18:45
回复 4# lyonamstrong
主要区别是在预处理方面有所不同,多看几篇预处理相关的文章就能体会。
http://bbs.bathome.net/thread-3768-1-1.html
作者: 诗歌王位 时间: 2016-9-14 08:05
【代码引用】
set a=1 & echo %a%
和
set a=1
echo %a%
【代码分析】
1.&只是语句连接符
2.上述两者是没有区别的,前提是采用的变量延迟(采用了延迟变量就要替换%%为!!了)
3.批处理是自上而下,逐条执行的,预处理的时候会把整条语句读入内存的,所以第一个语句会出错
【代码修改1】- @echo off
- set a=0
- set a=1 & echo 这是语句在一起的a:%a%
- set a=1
- echo 这是语句分开后的a:%a%
- pause
复制代码
【代码修改2】- @echo off &setlocal enabledelayedexpansion
- set a=0
- set a=1 & echo 这是语句在一起的a:!a!
- set a=1
- echo 这是语句分开后的a:!a!
- pause
复制代码
作者: lyonamstrong 时间: 2016-9-14 15:09
回复 6# 诗歌王位
好的,谢谢答疑!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |