[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理使用&连接两条命令和不使用&有何区别?

本帖最后由 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%
有区别吗?这里的&能理解成是回车吗?

请老师不吝赐教

set是定义变量,上面使用&连接符是两条命令
判定一个人是否为伸手党的标准是取决于他的态度和诚意。

TOP

解释器解释流程:
  1. set a=1 & echo %a%
  2. ->
  3. set a=1 & echo
  4. 输出 (set 无输出,echo 有输出):
  5. ECHO 处于打开状态。
  6. 赋值:
  7. "%a%" == "1 "
复制代码
  1. set a=1 echo %a%
  2. ->
  3. set a=1 echo
  4. 无输出
  5. 赋值:
  6. "%a%" == "1 echo "
复制代码
  1. set a=1
  2. 无输出
  3. 赋值:
  4. "%a%" == "1"
  5. echo %a%
  6. ->
  7. echo 1
  8. 输出:
  9. 1
复制代码
是否回显,以及回显是什么,你可以自己测试。

TOP

本帖最后由 lyonamstrong 于 2016-9-12 15:36 编辑

回复 2# wskwfkbdn
如果是2条命令,那么请至问题2
这么说吧,
step1 & step2 & step3 etc

step1
step2
step3
etc
这两者有没有区别?&的硬性往下执行的作用在这里能体现吗?

TOP

回复 4# lyonamstrong


主要区别是在预处理方面有所不同,多看几篇预处理相关的文章就能体会。
http://bbs.bathome.net/thread-3768-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

【代码引用】
set a=1 & echo %a%

set a=1
echo %a%
【代码分析】
1.&只是语句连接符
2.上述两者是没有区别的,前提是采用的变量延迟(采用了延迟变量就要替换%%为!!了)
3.批处理是自上而下,逐条执行的,预处理的时候会把整条语句读入内存的,所以第一个语句会出错
【代码修改1】
  1. @echo off
  2. set a=0
  3. set a=1 & echo 这是语句在一起的a:%a%
  4. set a=1
  5. echo 这是语句分开后的a:%a%
  6. pause
复制代码
【代码修改2】
  1. @echo off &setlocal enabledelayedexpansion
  2. set a=0
  3. set a=1 & echo 这是语句在一起的a:!a!
  4. set a=1
  5. echo 这是语句分开后的a:!a!
  6. pause
复制代码
会员联盟,周末科技

TOP

回复 6# 诗歌王位


    好的,谢谢答疑!

TOP

返回列表