无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3201|回复: 0
打印 上一主题 下一主题

环境变量截取规律

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-24 13:47:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、规律

  SET命令用法多变,如:显示、查询、设置与清除环境变量,简单计算,提示输入与回显提示,环境变量替换、截取,延迟环境变量扩展等等,其中环境变量截取,在MS帮助中也只有几个实例说明,没有完整的定义,看来看去,总是很模糊,因为做了一个简单的批处理,总结出如下规律:

  对于变量%STR%有%STR:~M%和%STR:~M,N%两种变量截取形式。

  (一)对于%STR:~M%

  1. 当M为零时,%STR:~M%=%STR%
  2. 当M为正数时,表示舍弃%STR%左M位
  3. 当M为负数时,表示提取%STR%右|M|位(|M|为M的绝对值,下同)

  特例:

  1. 当M为正数 并且 M≥变量字符串长度时,%STR:~M%为空字符串
  2. 当M为负数 并且 |M|≥变量字符串长度时,%STR:~M%=%STR%

  (二)对于%STR:~M,N%

  1. %STR:~M,N%中M的含义与%STR:~M%中的M含义相同
  2. 当N为零时,%STR:~M,N%为空字符串
  3. 当N为正数时,表示从%STR:~M%中提取左N位
  4. 当N为负数时,表示从%STR:~M%中舍弃右|N|位(即舍弃%STR:~N%)

  特例:

  1. 当N为正数,M为正数,并且 M+N≥变量字符串长度时,%STR:~M,N%=%STR:~M%
  2. 当N为正数,M为负数,并且 N≥|M|时,%STR:~M,N%=%STR:~M%
  3. 当N为负数、M为负数,并且 |N|≥|M|时,%STR:~M,N%为空字符串
  4. 当N为负数、M为负数,并且 |N|≥变量字符串长度时,%STR:~M,N%为空字符串
  5. 当N为负数、M为正数,并且 M+|N|≥变量字符串长度时,%STR:~M,N%为空字符串

二、验证

  设定变量str=1234567890,其长度为10,偏移量m、n取上限为15,取下限为-15,使用批处理穷举其所有的环境变量截取情况。运行批处理,在批处理同目录生成str10.txt。

  批处理:str10.cmd
=======================================
@echo off
setlocal enabledelayedexpansion
set str=1234567890
(
echo 环境变量截取规律
echo ────────────
echo 示例:str=1234567890
echo ────────────
) > str10.txt
for /l %%m in (-15,1,15) do (
    echo %%str:~%%m%%=!str:~%%m!>>str10.txt
)
echo ──────────── >>str10.txt
for /l %%m in (-15,1,15) do (
    for /l %%n in (-15,1,15) do (
        echo %%str:~%%m,%%n%%=!str:~%%m,%%n!>>str10.txt
    )
)
endlocal
goto :eof
=======================================

[ 本帖最后由 liuhj 于 2009-1-24 14:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 17:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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