找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28479|回复: 6

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

[复制链接]
发表于 2016-9-12 15:09:19 | 显示全部楼层 |阅读模式
本帖最后由 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%
有区别吗?这里的&能理解成是回车吗?

请老师不吝赐教
发表于 2016-9-12 15:24:55 | 显示全部楼层
set是定义变量,上面使用&连接符是两条命令
发表于 2016-9-12 15:26:57 | 显示全部楼层
解释器解释流程:

  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
复制代码
是否回显,以及回显是什么,你可以自己测试。
 楼主| 发表于 2016-9-12 15:27:17 | 显示全部楼层
本帖最后由 lyonamstrong 于 2016-9-12 15:36 编辑

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

step1
step2
step3
etc
这两者有没有区别?&的硬性往下执行的作用在这里能体现吗?
发表于 2016-9-12 18:45:17 | 显示全部楼层
回复 4# lyonamstrong


主要区别是在预处理方面有所不同,多看几篇预处理相关的文章就能体会。
http://bbs.bathome.net/thread-3768-1-1.html
发表于 2016-9-14 08:05:17 | 显示全部楼层
【代码引用】
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
复制代码
 楼主| 发表于 2016-9-14 15:09:43 | 显示全部楼层
回复 6# 诗歌王位


    好的,谢谢答疑!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:26 , Processed in 0.018407 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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