Board logo

标题: [其他] 批处理命令call echo %%b%%a%%%% [打印本页]

作者: wangsen    时间: 2021-4-20 22:16     标题: 批处理命令call echo %%b%%a%%%%

  1. @echo on
  2. set a=1
  3. set b1=10
  4. call echo %%b%%a%%%%
  5. call echo "%%b%%a%%%%"
  6. call echo %%b%a%%%
  7. call echo "%%b%a%%%"
  8. pause
复制代码
C:\>set a=1

C:\>set b1=10

C:\>call echo %b%a%%
a%

C:\>call echo "%b%a%%"
"a%"

C:\>call echo %b1%
10

C:\>call echo "%b1%"
"10"

C:\>pause
请按任意键继续. . .
谁能给我讲解一下这个是怎么出来的,我是新手,那个10那个我勉强能理解,但是不知道什么原理,那个a%那个我根本不知道为什么会出现这个结果
作者: newswan    时间: 2021-4-20 22:47

去看教程,预处理
第一次处理,从前到后每遇到%%号消去一个变成%
  1. call echo %b%a%%
  2. call echo "%b%a%%"
  3. call echo %b1%
  4. call echo "%b1%"
复制代码
之后第二次运行call
  1. echo %b%a%%
  2. echo "%b%a%%"
  3. echo %b1%
  4. echo "%b1%"
复制代码

作者: wangsen    时间: 2021-4-21 18:03

回复 2# newswan


    我测试了下,大概理解了
%b%没有定义输出 空 a%%号输出 a%
作者: 路过    时间: 2021-4-21 21:41

批处理默认对百分号预处理一次,但是可以人为加call,进行多次预处理
第一次
  1. call echo %b%a%%
  2. call echo "%b%a%%"
  3. call echo %b1%
  4. call echo "%b1%"
复制代码
call后
  1. echo a%
  2. echo "a%"
  3. echo 10
  4. echo "10"
复制代码





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