文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>DOS命令SET用法 和 延迟环境变量扩展

DOS命令SET用法 和 延迟环境变量扩展

时间:2010-10-23  来源:vivieu

DOS命令SET用法 和 延迟环境变量扩展   SET命令中添加了两个命令行开关:
    SET /A expression
    SET /P variable=[promptString]
    /A 指定等号右边的字符串为被评估的数字表达式。表达式运算符优先级由高到低如下:

     ()                  - 分组
    ! ~ -               - 一元运算符
    * / %               - 算数运算符
    + -                 - 算数运算符
    << >>               - 逻辑移位
    &                   - 按位“与”
    ^                   - 按位“异”
    |                   - 按位“或”
    = *= /= %= += -= &= ^= |= <<= >>=  - 赋值
    ,                   - 表达式分隔符
       /P 用户输入。输入提示串为promptString。promptString 可为空。
%PATH:str1=str2%
    扩展 PATH 环境变量,用 "str2" 代替扩展结果中的
    "str1"。要有效地从扩展结果中删除所有的"str1","str2" 可以是空的。
    "str1" 可以以星号打头,在这种情况下,"str1" 会从扩展结果的开始到 str1 剩余部分第一次出现的地方,都一直保持相配。
    也可以为扩展名指定子字符串。
    例:set PATH=abcdefg
       echo %PATH:cde=jjj%
       输出结果:abjjjfg
%PATH:~10,5%
    扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符(即截取从索引10开始的5个字符)。
    如果没有指定长度,则采用默认值,即变量数值的余数。
    如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。
    %PATH:~-10%
    提取 PATH 变量的最后十个字符。
    %PATH:~0,-2%
    提取 PATH 变量的所有字符,除了最后两个。

set /p 等待输入一个值
  D:
cd\
SET /P input=请输入要在D:\中建立和删除的文件夹:
echo 您输入全部两个字符是:%input%
echo 您输入开始两个字符是:%input:~0,2%
echo 您输入最后两个字符是:%input:~-2%
md %input%
pause
rd %input%
pause

 
启动或停用延缓环境变量扩展:
setlocal enabledelayedexpansion
...受影响的语句
Endlocal
在执行 SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL。
一般用在复合IF语句或FOR语句中. 考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境变量扩充是很有用的,而不是执行的时候。 以下例子说明直接变量扩充的问题:
    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "%VAR%" == "after" @echo If you see this, it worked
    )
不会显示消息,因为在读到第一个 IF 语句时,复合IF 语句中的 %VAR% 会被代替;原因是:IF 是一个复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和"after",这两者永远不会相等。 同样,以下这个例子也不会达到预期效果:
    set LIST=
    for %i in (*) do set LIST=%LIST% %i
    echo %LIST%
只是将LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在FOR 语句被读取时,只被扩充了一次;而那时的 LIST 变量是空的。因此,我们真正执行的 FOR 循环是:     for %i in (*) do set LIST= %i 这个循环继续将 LIST 设成找到的最后一个文件。   如果要在执行时扩充环境变量,需要使用惊叹号。所以可以将上面例子写成以下所示,以达到预期效果:  
  ==============test1.bat=====================
@echo off
setlocal enabledelayedexpansion
    set VAR=before
    if "%VAR%"=="before" (
        set VAR=after
 rem echo %var%
 rem echo !var!
        if "!VAR!"=="after" @echo If you see this, it worked
    )
pause
===================================
=============test2.bat======================
rem 在bat中for变量的%要双写
@echo off
setlocal enabledelayedexpansion
    set LIST=
    for %%i in (*) do set LIST=!LIST! %%i
    echo %LIST%
pause
=================================== 

 
使用set的/a可进行表达式运算。
 SET /P input1=请输入第一个加数:
SET /P input2=请输入第二个加数:
SET /A result=%input1% + %input2% echo %input1% + %input2% = %result%
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载