DOS:变量嵌套和命令嵌套

我们先看一下下面dos代码:

 

@echo off
set num=Redtek 2006 bbs.cn-dos.net
set a=123245
set b=87754321
echo.
echo a=%a% b=%b% num=%num%
set result=%%%%%%%%num:~%%%%b:~%a:~3,1%,1%%%%,4%%%%%%%%
echo %result%
call set result=%%%%%%%%num:~%%%%b:~%a:~3,1%,1%%%%,4%%%%%%%%
echo %result%
call call set result=%%%%%%%%num:~%%%%b:~%a:~3,1%,1%%%%,4%%%%%%%%
echo %result%
call call call set result=%%%%%%%%num:~%%%%b:~%a:~3,1%,1%%%%,4%%%%%%%%
echo %result%
echo.
pause

 

 

运行结果如下:

 

下面来一句一句给大家讲解一下。

(1)

set result=%%%%%%%%num:~%%%%b:~%a:~3,1%,1%%%%,4%%%%%%%%

请大家记住,直接运行命令,只解析第一层变量,其余的当作字符串

这一个语句中,我们知道如果两个%号中间没有任何东西,那么其得到的就是一个%,因此这个语句是result的值可以表示为:%%%%num:~%%b:~%a:~3,1%,1%%,4%%%%,而
%a:~3,1%
得到的是2,所以result最后得到的是
%%%%num:~%%b:~2,1%%,4%%%%

每个下滑线为一层变量

 

%% %% %% %% num:~%% %%b:~ %a:~3,1%,1 %% %%,4 %% %% %% %%

(2)

call set result=%%%%%%%%num:~%%%%b:~%a:~3,1%,1%%%%,4%%%%%%%%
一层命令嵌套,可解析两层变量,其余当作字符串

 

先解析第一层变量,得到%%%%num:~%%b:~2,1%%,4%%%%

然后解析第二层,规则一样,两个%变成一个%,于是得到

 

%%num:~%b:~2,1%,4%%

(3) call call set result=%%%%%%%%num:~%%%%b:~%a:~3,1%,1%%%%,4%%%%%%%%

以此类推,可以解析三层变量

由%%num:~%b:~2,1%,4%% 得到%num:~7,4%

(4)最后得到num:~7,4 ,num变量中,从第1+7=8个开始算起,一共4个字符组成的2006

 

 

 


 

转载于:https://www.cnblogs.com/littlethank/archive/2012/02/23/2365083.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值