Board logo

标题: 转贴《4DOS 的说明书2》 [打印本页]

作者: lydong     时间: 2002-10-22 00:00    标题: 转贴《4DOS 的说明书2》

1. DIR 时可设定各附加档名不同颜色
    如

    > set colordir=com exe bat btm:white;dirs:bri yellow

2. 切换子目录方便
    如

    > c:\et\ 再按  就可切过去

    当然若配合 , 更方便

3. History 加强
    按  或  会出现一个 History 视窗,供您选择打过的指令

4. 在 DesqView 下较不会当

5. Prompt 可设计的更强
    如 prompt $z$s$p$g 显示您在第几层 Shell 中

6. 直接设定 DOS 下的 HotKey, 不需透过 ANSI.SYS
    如

     >  alias @shift-f10 eexitr 此后按 Shift-F10 直接回前一层 Shell
     >  alias @f12 clsr 此后按  直接清萤幕,Oh ~~ Nice !!

7. 有些初值设定可以放在 4DOS.INI 中

8. Swapping 方式多样化
    如 在 4dos.ini 中设定

    Swapping = ,XMS,EMS,F:\TMP,C:\TMP,NONE

    则 Swapping 到 XMS, 当 XMS 满了后 用 EMS...
    (在 qemm386 下 XMS 比 EMS 快!!)

9. filename wildcard 加强
    可用 [abc]this 代表 athis 或 bthis 或 cthis
    详细情形自行看 DOC 吧!

10. 在两个子目录之间切换方便
     如
      C:\>     c:\bin\    切到 c:\bin
      C:\BIN>  d:\test\   切到 d:\test
      C:\TEST> cd -
      C:\TEST>
      您发现它的方便性了吗?!

11. keystack 强大的按键功能:

     在执行某个程式时,可将某个键值传给该程式,就像您按下某个键一
     样,例如有个防毒程式 Vr_dt,其非注册版程式在执行时会提醒您付
     费,然后等候您按下任何一键再继续执行,此时您先执行一个常驻程
     式 kstack.com (提供 keystack 功能),然后执行 

     keystack enter ^ vr_dt/i

     此时 keystack 便将 enter 这个键值传给 vr_dt.com,就好比您执行
     vr_dt/i 再按 enter 键一样!!

        4DOS 是配合 MS/PC DOS (以下简称 DOS) 使用的 Shareware, 各位使用 DOS
    这数年来, 是否经常觉得人机介面 (User Interface) 亲和力不佳, 且使用上觉得
    有些功能未尽理想? 在美国, 曾有 User 使用 4DOS 之后写信至 Microsoft 公司,
    建议新版 DOS 能够以 4DOS 为蓝本, 我个人使用后立觉此言不虚, 因此写下本文以
    提供各位一个进阶之门, 与各位分享我目前工作环境的便利.

        4DOS 不占记忆体, 这话说起来挺玄的, 但确实如此, 它在执行时会将自己从记
    忆体中释放, 平常你可将之 Swap 到 HMA (High Memory Area 即 1024KB 以上第一
    个 64KB 的区域) , 或是 Swap 到 EMS , 或是以档案形式 Swap 到 Disk 上, 完全
    不影响已少得可怜的 640KB. 且相容性非常高, 只要是 DOS 相容的系统都没问题,
    与 3Com 3+, Novell Netware 等网路相容, 与 ETen, KC, 01 等中文系统相容, 与
    QEMM 等记忆体管理程式相容, 连 Windows 3.0 也相容.

        4DOS 可直接命令 Speaker 发声, 可记录未经你允许擅自使用你电脑者所下过
    的指令, 可把 Batch File 存在 RAM 中就不用设一大堆 Batch File 浪费硬碟空间,
    有设定暂停多久再继续功能, 有替你注解目录功能, 有记录所下过所有指令的功能,
    有..... 实在太多太好用的功能.... 请不要太过于激动, 擦干你的口水, 以下就是
    说明了.

        第一步, 你必须解开 4DOS301a.ZIP, 把 4DOS.COM, 4DOS286.EXE 放到 ROOT,
    并在 CONFIG.SYS 中设定:

        SHELL=C:\4DOS.COM /P /E:1024 /A:1024 /H:1024
                           │ │      │      └─  History : 放所下过指令空间
                           │ │      └─  Alias : 放你所设定指令集功能空间
                           │ └─  Environment : 工作空间
                           └─ 不加此参数开机时不执行 AUTOEXEC.BAT

        SET COMSPEC=C:\4DOS.COM

        由于原文解说档过于庞大 (一片 2D) , 故在此仅列出特别之处.
        ========================================================

    1.  你开了一个专门放 Batch File 的子目录吗? 一个仅有几个 byte 的 Batch
File
        也要占去 2048 bytes 的硬碟空间, 多了还得了!?偏偏又少不了, 怎么办??

        ALIAS   可把你所设定的指令集储存在记忆体中, 不占用 640K 记忆体, 不占硬
                碟空间, 以 RAM 的速度执行, 又快又不须读取硬碟.

    2.  曾有人擅自使用你的电脑而你却一无所知, 却莫明奇妙中了病毒, 或重要程式被
        盗拷或破坏, 或设定被改掉吗?

        LOG     可把你所有执行过的指令附注时间写在档案中, 你平时可关掉, 离开时
                打开, 就可知何时有人开过你的电脑及下了哪些指令.

    3.  经常下很长而又得时时重覆的指令, 写成 Batch File 又经常有变数更动, 跑一
        些常驻程式又浪费记忆体空间.

        4DOS    内建就有此功能, 可随时叫出曾经下过的指令加以编辑后执行.

    4.  你的硬碟中有许多目录或档案久而不用就忘了是什么吗?

        DESCRIBE可在你指定的目录或档名旁边加上 40 个字的简短说明, 如下:

        5DOS              11-17-90  17:56 Microsoft DOS 5.0 NEWS Version
        ET                12-25-90  23:34 ETen Chinese system.
        autoexec.bat      314   1-15-91   0:07 Run when boot finished

    5.  你想重覆看一个文件档内容, 而 TYPE 晃过一次就没了, 用 PE2 之类的软体来
        看似乎又太正式 (需等待硬碟读取及占用记忆体) .

        LIST    是快速又简便的内建功能.

    6.  你想让电脑发出一连串的叫声以提醒你某工作已完成或警告你一些讯息吗?

        BEEP    可让你以不同的声音高低及组合发出声音.

    7.  DOS 中有很多指令没有 On-Line Help 的功能, 有时必须一边翻书才行, 而有些
        工作经不起这样中断的.

        F1      有完整的 On-Line Help 功能, 教你下参数, 还有范例, 使用时机.

    8.  在 DOS 中处理不明确档名或多个档案实在没办法吗?

        DIR     DIR *2*.B*
        DEL     DEL *.BAK TEST.TXT 4DOS.DOC
        COPY    COPY *.DOC GOD.C *.TXT A:
        CDD     C:\>CDD D:\ET                立刻改变现在的 Driver 及 Path


        以上只是一部分, 最强之处在于所有的功能都是内建指令, 除了 On-Line Help
    的说明部分太大须另外放之外, 你根本无需另辟空间来放一套 4DOS, 只有 ROOT 的
    两个档案 4DOS.COM 及 4DOS286.EXE (XT 须用 4DOS88.EXE) 而已, 不过唯一的缺
    点就是 FORMAT 时不能加 /S, 否则写入的 COMMAND.COM 是 4DOS.COM 而不是正常
    的 DOS COMMAND.COM.

        总之, 4DOS 会为你省下许多硬碟的空间, 读取的时间, 更人性化, 更高的亲和
    力, 它为你把 DOS 中许多你觉得不尽完美的小地方都作了修正及加强, 功能增加,
    它所为你设定的工作环境会令你...... 咦!?我怎么也在流口水了呢?

        国内这套软体极为冷门, 请多找几个 BBS 站, 较具规模或我常去的站应该都有,
    若实在找没有, 请随便找个信件网路留封信给我, 我会告诉你或 D/L 给你, 档案不
    大, 4DOS301a.ZIP 只有一片 2D 而已, 若已拿到且已在使用的 USER , 更欢迎你来
    信讨论.

================================================================================

    首先, 我们先确定 4DOS 的相容性:

    硬体方面: PC, PC XT, PC AT/386, PS/2 及 Compatible 的机型都完全相容.
    系统方面: PC-DOS, MS-DOS, Chinese system 也都相容.
    网路方面: MS-DOS Compatible 的网路包括 3Com 3+, Novell Netware 都相容.
    软体方面: Lotus, dBase, DESQview, QEMM, Windows.... 等都相容.

    既然相容性没问题了, 那使用环境呢?

    4DOS 可说是第一个支援 XMS 的软体, 虽然 Intel 在 '88 年就已定出 XMS 的规格,
    但到目前为止, 4DOS 是第一个发表的支援 XMS 的软体, 4DOS 在一开机载入时会先
    找 HMA (High Memory Area), 再找 EMS, 都找不到则会自动 Swap 在磁碟上, 以记
    忆体来说, 已到达自动寻找最节省的方式常驻, 所有的功能及指令全部内建, 老实说,
    即使把开机系统中的 COMMAND.COM 干掉, 把 4DOS.COM 改成 COMMAND.COM 也没问题.

    那就可以直接用了吧?

    BIN-BON ! 答对了, 如果你对你的系统要求如此之低的话, 的确可以就这样用了, 可
    是 4DOS 既然这么强大, 当然会让 User 设定一些参数使它更有弹性才对, 以下是说
    明, 大写表示不可更动部份, 小写表示随 User 高兴 (但不可过份) :

    首先, 在 CONFIG.SYS 中要加入 SHELL = d:\path\4DOS.COM, 使电脑一开机时不去找
    COMMAND.COM 而直接把 4DOS.COM 当 COMMAND.COM 来用.

    参数:   /A:n    ALIAS 的大小, ALIAS 等于 DOS 的 BATCH 档, 执行时为最优先执
                    行的项目, 全部先载入 Memory 中后执行, 预设值是 1024 (bytes,
                    以下皆是)如果你设定的 ALIAS 很多, n 也要跟着加多, 超过的
                    ALIAS 不会被载入, n 在 256 - 32000 之间.

            /E      环境的大小, n 在 256 - 32000 之间, 有下列两种用法:
                    /E:n    直接设定大小, 预设值是 512.
                    /E+n    若环境已不足使用时可再追加次要环境以便使用, 预设值
                            是 128, 且以 n 必须以 128 为单位如 256, 512, 1024..

            /H:n    指令编辑空间的大小, 4DOS 可将所下过的指令叫出编辑, 空间越大
                    记得越多, 预设值是 1024, n 在 512 - 8192 之间, 最新的指令会
                    把最旧的挤掉, 可用上下键查询或 F3 重覆上一指令在目前游标位
                    置之后的指令, 叫出后可 Insert 或 Delete 编辑.

            /U      把 4DOS SWAP 到 UMB (Upper Memory Block), 如果有用如 QEMM
                    之类的记忆体管理程式的话, 加此参数保证不相冲, 因为 4DOS 是
                    自行 SWAP 而不是靠管理程式 SWAP 的.

            /P  4DOS 按照预设的 SWAP 方式进行, 所有变数未经指定则以预设值设定.

    范例:   SHELL=C:\4DOS.COM /A:1024 /E:1024U /H:1024 /P /U

    又  :   因为不是出书, 时间空间有限, 故参数并未全部介绍, 仅一般常用变数而已.

    其次, 在 AUTOEXEC.BAT 中加上 SET COMSPEC=d:\path\4DOS.COM, 比较好, 设 PATH
    时最好第一个设 C:\; 还有记得要包括 4ODS 的 HELP.EXE 及 DOS.HLP 所在的路径,
    且要优先于 DOS 5.0 的路径, 不然按 F1 时出现的不是 4DOS 而是 DOS 5.0 的 HELP.

    说到 HELP, 4DOS 的 HELP 功能相当不错, 看过 4DOS.DOC 的 User 不妨用 F1 把
    4DOS 的功能看得更清楚些.

================================================================================

       4DOS 延伸批次档技巧集

1. 经常我们都在批次档中判断 USER 所传入的值是否为空字串
    最常见的写法, 大概就是

    IF '%1'=='' GOTO HELP

    表示若是空字串就跳至 HELP 的区段继续执行批次档
    但是 4DOS 提供了另一个写法. 参考如下

    IF %@LEN[%1]=0 GOTO HELP

    如何, 像极了 BASIC 的写法吧!
    PS. %@ 是 4DOS 内建字元, 以下则不在另行描述.

2. 另外介绍您一个字元 EXT
    在我们使用批次档时. MS-DOS 只能处理整个档名
    而没有办法单单处理延伸档名. 像我在处理站务时.
    常须将 SUPER BBS 的USER档作上不同的时间备份.
    例如. COPY USERS.BBS 01-01-92.BBS
    由于日期在批次档中无法抓取. 延伸档名也无法跟着处理.
    只好找个小工具来用. 但还是觉的不是很顺畅. 后来改成用 4DOS 后
    我改成了用以下的写法.
    COPY %1 %_DATE.%@EXT[%1]

    %1 应该不用解释了. 它是在批次档中传入的参数.
    %_DATE 表示日期.
    %@EXT[%1] 则表示抓取 %1 的延伸档名.

    如何!. 不赖吧. ;>
    像我自己就写了个名叫SHOW的批次档

    IF %@EXT[%1]==GIF GOTO CSHOW
    IF %@EXT[%1]==ARJ GOTO ARJ_L
    IF %@EXT[%1]==ZIP GOTO PKZ_V
    IF %@EXT[%1]==LZH GOTO LHA_L
    IF %@EXT[%1]==VL  GOTO APPLY

    怎样. SHEZ 也不见得有我好用吧...

3. 常常我会碰到很多情形. 当我须要清除一个目录.
    但是少数的特定档案要留下时. 最常见的使用办法.
    就是把要留下的档案拷贝到别的地方. 再将整个目录清除
    然后再把档案搬回来. 现在大可不必费事了. 4DOS 有提供这个功能

    EXCEPT (*.DOC) DEL *.* /Y

    那么在现在这个目录下. 所有的 .DOC 档都将会被保留. 其它的则会被删除
    当然, 档案也可以不止包含一种. 您可以用如下的写法

    EXCEPT (*.DOC *.TXT) DEL *.* /Y

    聪明的你. 如果要在批次档中使用. 那就很简单啦.
    只要将档名换成  %1 就可以了. RIGHT??   ;>

4. 很多常常抱怨. DOS 没法子作数学运算. 得自己找些小工具才可以用.
    或者自己写个小程式. 现在不用啦. 批次档就可以啦. 4DOS 提供了一个内建字元
    - EVAL . 那要怎么用呢?? 很简单. 你只要在 4DOS 下打上

    ECHO %@EVAL[99*99]

    那么你马上就会看到画面上告诉你. 99 乘以 99 等于 9801 啦. 可是....
    这样子还是不太好用呀. 那么的话. 该怎么办呢?? 写个批次档就得啦.

    ECHO %1 = %@EVAL[%1]

    哈! 那么那些小工具就通通可以丢掉啦... ;>

5. 很多在写批次档时. 总喜欢自己的程式会发出声音来.
    最好是会唱首歌儿. 那自然是最美满不过的事啦. 嘿. 偷偷告诉你
    BEEP 就可以啦. 如何... 4DOS 不错吧. 偷偷拿别人写好的歌给你参考一下.
    有空自己研究一下吧.

         beep 392 8 524 8 392 8 262 8 392 8 524 8 392 8 19 8
         beep 392 8 524 8 392 8 524 8 659 4 19 8
         beep 587 3 524 3 494 3 440 3 415 3
         beep 392 8 524 8 392 8 262 8 392 8 524 8 392 8 19 8
         beep 524 4 19 8 440 3 392 3 19 4 349 3 19 4
         beep 330 3 19 4 294 3 19 4 262 3 19 12
         beep 233 8 311 8 233 8 156 8 233 8 311 8 233 8 19 8
         beep 233 8 311 8 233 8 311 8 392 4 19 8
         beep 349 3 311 3 294 3 262 3 248 3
         beep 233 8 311 8 233 8 156 8 233 8 311 8 233 8 19 8
         beep 311 4 19 8 262 3 233 3 19 4 208 3 19 4
         beep 196 3 19 12 175 3 19 12 156 3 19 6 32 4 19 3 43 4

6. 4DOS 有个一直不太满意的缺点. 就是他所写的所有字体通通都是小写的.
    连在批次档显示时也一样. 幸好. 4DOS 跟 DBASE 一样. 提供了一个 UPPER
    的内建字元. 要显示时. 只要将这个字元加上就可以啦.

    ECHO 您呼叫的这个档案是 %@UPPER[%1]

7. 常常有些小工具. 都是在算一份文件总共有多少行的.
    现在. 4DOS 就可以帮你算啦. 就是 LINES 这个内建字元

    ECHO 您指定的文件 %1 一共有 %@LINES[%1] 行

8. 4DOS 另外有个好用的命令. 当你要进行某些动作时. 但对档案却要有所挑选.
    4DOS 的命令 SELECT . 可以让你慢慢的挑选. 譬如说. 你想将现行目录下,
    某些档案删除. 却又没有任何规则可循时. 别紧张. 4DOS 不会真的任你一个
    个地去删. 你只要加上 SELECT 这个命令即可.

    SELECT DEL (*.*)

    SELECT 自动会显示出一个视窗. 让你用 SPACE 选择. ENTER 后执行 DEL 的动作.
    帅吧! 批次档中就更简单啰. 您只要加入如下的命令就可以啦.

    SELECT COPY (%1) %2

    或者, 如果那天你要标记一些档案来处理. 并将档名输出到一个档案中.
    (如使用 ZMODEM 来送出某些档案. DSZ SZ -M @FILES.LST. 那你就可以用
    SELECT 来造出这个 FILES.LST. 用法就跟现在的 TELIX 一模一样.)
    那只要如下输入....

    SELECT ECHO (*.*) >> FILES.LST

9. 今天又无聊的翻了一下 4DOS 的文件. 忽然间我发觉. 自己可以用简单的批次档
    就作出了一个类似 SYSTEM INFO 之类的工具来. 我把它写好如下.....

        echo Date: %_dow %_date
        echo Time: %_time
        echo 4DOS version: %_4ver
        echo OS: %_dos
        echo DOS version: %_dosver
        echo Video: %_video
        echo Monitor type: %_monitor
        if %_DV==1 echo DesqView Detected

    哈哈! 厉害吧....下次要要判断是不是彩色银幕就不用花那么大的工夫啦....

================================================================================

作者: lydong     时间: 2002-10-22 00:00
4DOS 内部变数
        ====================================================================

              以下的这些变数并不储存在 DOS 的环境(ENVIRONMENT). 但是可以在
              命令(COMMAND), 别名(ALIAS), 及批次档(BATCH)中使用. 就像是一般
              的环境变数一般.  这些变数的值被储存在 4DOS 内部中. 并且不能使
              用 SET, UNSET 或 ESET 这些命令来改变. 无论如何. 你可以不顾这些
              设定, 使用相同的名称来将这些值覆盖过. 它将会储存在环境中.

              这些内部变数可以用在 4DOS 的 BATCH 档或是别名之中. 用来测试系
              统的资源.  以便于作最正确的设定.  您也可以在 4DOS 的 PROMPT 下
              直接检查内部变数的值. 如下例:

                   c:\> echo %variablename

              以下命令就如同一般的环境变数. 请在其之前加上一个 % 号.

        --------------------------------------------------------------------

              _? 指出 4DOS 最后一个命令的结束值(EXIT CODE)

              _4VER 储存 4DOS 目前版本之变数.

              _ALIAS 以 bytes 方式. 显示目前 alias 的空间剩余.

              _ANSI 侦测是否载入 ansi 之驱动程式. 1 表示有. 0 则无.

              _BATCH 显示目前在第几层 batch 档中执行. "0" 表示无任何 batch
                     档被执行中.

              _BG 显示目前银幕的背景颜色 (前三个字元). 如一显示目前银幕的
                  背景颜色 (井e三个字元). 如一般状态下是 "yla"

              _BOOT 显示您用来开机的磁碟. 不加任何符号. 如 "c"

              _CODEPAGE 显示目前使用的代码 (code page number)

              _COLUMN 显示目前游标所在之列号 (一般都为 "0")

              _COLUMNS 显示银幕可用之列数(一般为"80")

              _CPU 显示 cpu 之类别.
                   86  -> 8086 and 8088           286 -> 80286
                   186 -> 80186 and 80188         386 -> i386
                   200 -> NEC V20 and V30         486 -> i486

              _CWD 显示目前所在的目录.(连同磁碟机号)

              _CWDS 显示目前所在的目录(同 CWD, 只是结尾再加上了一个 "\")

              _CWP 显示目前所在之目录(省略了磁碟机号)

              _CWPS 显示目前所在之目录(同 CWP, 只是结尾再加上了一个 "\")

              _DATE 显示目前的日期

              _DISK 显示目前所在之磁碟机号

              _DOS 显示目前您使用何种系统(通常约有两种 "DOS" 及 "OS2")

              _DOSVER 显是目前使用 DOS 的版本.(如 "5.0)
                     (OS/2 1.2 -> 10.2        OS/2 1.3 -> 10.3
                      OS/2 2.0 -> 20.0 ...等等)

              _DOW 显示目前的星期数(前三个字元, 如  "Mon", "Tue")

              _DV 显示是否载入 DESQView ("1" 载入 "0" 没载入)

              _ENV 以 bytes 方式显示目前环境(environment) 剩余多少空间

              _FG 显示目前银幕的前景颜色(前三个字, 如 "Whi" 表白色)

              _LASTDISK 显示最后一允许的磁碟标号(不含任何符号, 如"d")

              _MONITOR 显示银幕之种类 ("mono" 或 "color").

              _MOUSE 显示滑鼠驱动程式是否已载入 ("1" 载入 "0" 没载入)

              _NDP 显示数学运算器之型号(coprocessor)

                   0   -> no coprocessor is installed
                   87  -> 8087
                   287 -> 80287
                   387 -> 80387 or 80486DX

              _ROW 显示目前游标所在之行号

              _ROWS 显示银幕上允许之行数 (一般为 25)

              _SHELL 显示目前正在第几层 shell 之中.

              _TIME 显示目前之时间

              _TRANSIENT is 1 if the current shell is transient (started
              with a /C), or 0 otherwise.

              _VIDEO 显示显示卡之类别 ("mono", "cga", "ega", or "vga").

              _WIN 显示目前 windows 的使用状态

                   0       并未执行  windows
                   1       Windows 2
                   2       Windows 3 in 386 enhanced mode
                   3       Windows 3 in real or standard mode
                   20      OS/2 2.0 DOS machine with Windows support

              其中 _CWD, _CWDS, _CWP, _CWPS, _DISK 这几项变数之大小写
              端看您在 SETDOS 中的设定 (SETDOS/U=1 表大写) 或者是您在
              4DOS.INI 中的设定. _MONITOR 及 _VIDEO 这两个变数传回的值
              用远都是小写. _BG, _DOW, 及 _FG 这三个变数的第一个字母都
              是大写. 其余则是小写.

              您可以依您的须要来设定您的系统. 以下仅仅是提供您一个范例.
              在以下的 BATCH 档中.  依显示卡的种类来设定银幕颜色:

                   iff "%_video"=="mono" then
                     color bright white on black
                   else
                     color bright white on blue
                   endiff

              如果 DESQView 已经载入. 则呼叫 dvstart.bat:

                   if "%_dv" == "1" call dvstart

              将目前时间及现行目录下拥有的档案输出到  dirsave 这个档中:

                   echo Directory as of %_date %_time > dirsave
                   dir >> dirsave

              设定当在 shell 之下时. 启动不同的 prompt 及前景颜色

                   iff %_shell==0 then
                     prompt $t $p$g
                     color %_fg on blue
                   else
                     prompt [$z] $p$g
                     color %_fg on cyan
                   endiff


        ====================================================================
              ## 4DOS 功能变数
        ====================================================================

              功能变数就如同内部变数一般. 只是它们所处理亦可能是非特定
              的值. 在使用的符号上亦有所不同. 内部变数都是以 "%_" 作开
              头. 而功能变数则都以 "%@" 作字元开头.

              以下如果您看到有如同 "b|k|m" 等参数时. 除非有特别说明
              否则大略表示如下的意义.

                   b     以 bytes 传回结果值
                   K     以 kilobytes (bytes / 1024) 传回结果值
                   k     以 thousand of bytes (bytes /1000) 传回结果值
                   M     以 megabytes (bytes / 1048576) 传回结果值
                   m     以 millions of bytes (bytes / 1000000) 传回结果值.

        --------------------------------------------------------------------

              @ALIAS[name]:  传回 name 对应的别名内容.

              @ASCII[c]:  传回 c 这个字元的 ascii 码

              @ATTRIB[filename,attrib]:  传回值有 "1" 与 "0" 两种! 表示您所
              指定的属性是否有开启! filename 指指定的档案! 属性参数则有以下
              数种:

                   N     Normal (no attribute bits set)
                   R     Read-only
                   H     Hidden
                   S     System
                   D     Directory
                   A     Archive

              以上属性除了 "N" 以外! 其它的都可以结合在一起使用! 但非得全部
              拥有您所询问的属性才会传回 "1"

              @CHAR[n]:  n 表一个数字! 而传回值即对应的 ascii 字串! 如
              %@CHAR[65] -> A

              @DATE[mm-dd-yy]:  传回的值将会是自 1980年一月一日到您指定日期
              的日数!

              @DESCRIPT[filename]:  传回指定档案的说明(您用 describe 指令所
              加注在档案后面的说明.

              @DEVICE[name]:  传回"1" 与"0". 以表示您指定的 name 是否有使用
              (printer, com1, com2....etc)

              @DISKFREE[d:,b|k|m]: 传回特定磁碟所剩下的空间.

              @DISKTOTAL[d:,b|k|m]: 传回特定磁碟所有之空间.

              @DISKUSED[d:,b|k|m]: 传回特定磁碟已使用之空间.

              @DOSMEM[b|k|m]:  传回基本记忆体(640 base memory)所剩之空间.

              @EMS[b|k|m]:  传回 EMS 所剩之空间.

              @EVAL[expression]:  数学运算符号! 传回值将是其中的算数值.
              支援 加(+) 减(-) 乘(*) 除(/) 余数(%%). 使用中亦可使用环境
              变数及一般变数及括号(). 最大范围达整数 16位及小数点八位.

              @EXEC[command]:  执行您所下的命令. command 的范围包含 4dos 的
              别名, 内建命令. 外部命令, .btm 档, .bat 档.

              @EXT[filename]:  传回您所指定的 filename 的副档名.(不含句点)
              without a leading period.

              @EXTENDED[b|k|m]:  传回 extended memory 的总空间.

              @FILEDATE[filename]:  传回您指定 filename 的日期.

              @FILESIZE[filename,b|k|m]:  传回您所指定 filename 的大小.

              @FILETIME[filename]:  Returns the time a file was last
              modified, in hh:mm format.  The separator character will vary
              with the country definition in use on your system.

              @FULL[filename]:  传回您指定的 filename 的完整路径与档名.
                                亦即在 filename 中的完整路径. 若 filename 中
                                无路径. 则传回现行路径及 filename.

              @INDEX[string1,string2]:  显示 string2 是否包含在 string1 中.
              若不存在. 则传回 -1. 若存在. 则传回起始起始位置. 起始位置则传回
              0.

              @INT[n]: 传回指定 n 的整数部份(正负号不受影响.若有字元存在则自其
                       后切断.

              @LABEL[d:]:  传回指定磁碟机之 label.

              @LEN[string]:  传回指定 string 之字串长度.

              @LINE[filename,n]:  传回指定 filename 中第 n 行之资料. 若 n
              数超出 filename 之行数. 则传回  "**EOF**".

              @LINES[filename]:  传回指定之 filename 之行数-1. 若 filename
              内文只有一行则传回 0. 若档案不存在. 则传回 -1.

              @LOWER[string]:  传回指定  string  之小写.

              @LPT[n]:  传回指定之 LPTn 是否已经连上. 若已连上传回 1. 若无则
              传回 0.

              @MAKEDATE[n]:  传回自 1980/1/1 日起第 n 天之日期. 为 @DATE 之相
              反变数.

              @MAKETIME[n]:  传回自 00:00:00 时起第 n 秒之时间.

              @NAME[filename]: 传回指定 filename 之主档名(不含 path 及副档名.

              @PATH[filename]: 传回指定 filename 之完整路径.

              @READSCR[row,col,length]: 传回目前画面上. 第 row 行第 col 个字起
              . 长度为 length 之本文 (text).

              @READY[d:]: 传回  "1" 或 "0" 以判断磁碟是否已经准备好.(通常用在
              软碟上).

              @REMOTE[d:]: 传回 "1" 或 "0" 以判断磁碟机是否已 remote (network)
              自己试一下. 搞不太懂... ;>

              @REMOVABLE[d:]: 传回 "1" 或 "0" 以判断磁碟机是否可移动的.

              @SEARCH[filename]:  传回指定 filename(主档名) 所在之完整路径
              及档名. filename 包含所有的执行档(com,exe,bat,btm). 而档案限
              于存在 path 之中. 否则无传回值.

              @SELECT[filename,top,left,bottom,right,title]: 制做一个临时的
              视窗. 其在银幕之大小为第 top 行起至 bottom 行止. 自第 left 列
              起至 right 行止. 并 title 做为视窗标题. 视窗中. 可以使用上下键
              移动光棒. 若按 esc 键. 将不传回任何值. 若按 enter . 则传回光棒
              所在行. (资料长度限于视窗之长度)

              @SUBSTR[string,start,length]: 传回在 string 字串中. 自第 start
              +1 之位置起 length 个字元. string 亦可为变数. (如 %_time)

              @TIME[hh:mm:ss]: 传回自 00:00:00 起至 hh:mm:ss 止之秒数

              @TRUENAME[filename]:  传回完整路径及完整档名.

              @UNIQUE[d:\path]:  制作一个零长度大小之档案. (独特档名) 于您指定
              的目录中. 并传回完整的路径与此独特之档名.

              @UPPER[string]: 传回 string 之大写.

              @WORD[n,string]:  传回于 string 此句子中. 第 n+1 个单字.
              如果 n 为负数. 则自倒数起算 .

                   %@WORD[2,NOW IS THE TIME]      -> "THE"
                   %@WORD[-0,NOW IS THE TIME]     -> "TIME"
                   %@WORD[-2,NOW IS THE TIME]     -> "IS"

              @XMS[b|k|m]: 传回 XMS 之总共空间.

        ====================================================================
        ====================================================================

              您可依您的须要搭配以上变数. 或者搭配 prompt 使用. (详见原文手册)
              (还得等狼狼再接再厉) 如:

                   c:\> prompt (%%@dosmem[K]K) $p$g

              或者设定一个简单的线上计算机如..

                   c:\> alias calc `echo The answer is:  %@eval[%&]`

              如以下一个简单的参数. 使用日期与时间来设定一些动作.
              本批次档仅设定当于每次执行此批次档时. 当日期大于旧有记录. 而当
              日时间又已超过早上六点. 则将现行日期记录进一个纪录档中.
              仅供参考. 欢迎您多加利用.

                  rem    DD 表 _date, DY 表 yymmdd date, TM 表 _time
                  set dd=%_date
                  set dy=%@substr[%dd,6,2]%@substr[%dd,0,2]%@substr[%dd,3,2]
                  set lastdate=0
                  iff exist c:\onceaday.dat then
                    set lastdate=%@line[onceaday.dat,0]
                  endiff
                  iff %dy gt %lastdate then
                    set tm=%_time
                    iff "%@substr[%tm,0,2]%@substr[%tm,3,2]" gt "0600" then
                      rem 条件符合  执行程式
                      echo %dy > c:\onceaday.dat
                    endiff
                  endiff
作者: wcr100     时间: 2010-12-20 14:54
真不错,正用这呢