Board logo

标题: 关于SET命令中,参数环境变量扩充的不解.. [打印本页]

作者: zgren1979     时间: 2006-11-20 12:48    标题: 关于SET命令中,参数环境变量扩充的不解..

今天在看SET命令的帮助,看到参数环境变量.....虽然看完,但觉得蒙蒙笼笼的...


我想所谓

用SET 语句 所赋值是不是可以理解为是静态的,除非有新的SET语句在给他赋值,不然不会改变,又由于在FOR,IF等语句中,首先被编译的是参数,所以(如帮助列1,列2所示),LIST=%LIST% %i这样的关系,其实是反应的%i.

而如果在参数前后加!,既变为动态参数(或变量)就可以参加运算...

总的来说理解还是很混乱,希望学长者明之..怎样理解较为合适.多谢...

附: 帮助列子


不正确的列子.

  Quote:
set LIST=
    for %i in (*) do set LIST=%LIST% %i
    echo %LIST%



  Quote:
sset VAR=before
    if "%VAR%" == "before" (
        set VAR=after;
        if "%VAR%" == "after" @echo If you see this, it worked
    )et VAR=before

正确的列子:

  Quote:
set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "!VAR!" == "after" @echo If you see this, it worked
    )



  Quote:
  set LIST=
    for %i in (*) do set LIST=!LIST! %i
    echo %LIST%


作者: reddragonfly     时间: 2006-11-20 14:11
批处理内置命令:if较为繁琐,set,for相对而言较难掌握;若三个命令交叉配合使用对于初学者来说的确是有些难度;但想学好批处理就必须熟练掌握这几个命令,无奈!
批处理文件中可以对参数或变量赋予相应的值:参数(例如形参%0~%9,%0代表批处理本身,%*是批处理参数的通配符),变量(常通过Set,for命令指定,然后通过其它命令如if等加以应用),若在批处理中启用延缓环境变量(setlocal enabledelayedexpansion)的话,就可以用!符号代替%来调用环境变量所赋予的字符串值,而不是所谓动态环境变量的标识,系统中的几个动态环境变量如下:(%cd%,%time%,%date%,%random%,%errorlevel%,%cmdextversion%,%cmdcmdline%),所谓动态就是随着系统运行环境的变化而变化着(随机性),你不要把参数,变量,动态变量混为一谈;至于参数(或变量)参与运算(进行大小的比较,加减乘除,取余运算等等),完全是通过相应的运算符来实现的!对于扩展变量的理解你更要细看,因为的确很有意思!
你要想熟练掌握并运用这几个命令,就需要勤看,勤写,多看个几遍自然而然就理解通透了!

[ Last edited by reddragonfly on 2006-11-20 at 02:23 PM ]
作者: tao0610     时间: 2006-11-20 14:59
多看别人的实例,对自己也有一定提高!