• 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

     
  • 相关阅读:
    隐藏控件标签
    在线删除文件asp.net c#
    access数据库在线生成xls电子表格
    html5 css练习,弹性三栏布局
    html5 css多列布局
    Java利用webservice创建接口案例源码
    Java-Tomcat内存溢出详解
    Linux基本命令——ps/top
    Weka——如何连接MySQL数据库
    Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/littlethank/p/2365083.html
Copyright © 2020-2023  润新知