『楼 主』:
转贴《4DOS 的说明书2》
使用 LLM 解释/回答一下
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 加强
可用 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=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 应该不用解释了. 它是在批次档中传入的参数.
%_DATE 表示日期.
%@EXT 则表示抓取 %1 的延伸档名.
如何!. 不赖吧. ;>
像我自己就写了个名叫SHOW的批次档
IF %@EXT==GIF GOTO CSHOW
IF %@EXT==ARJ GOTO ARJ_L
IF %@EXT==ZIP GOTO PKZ_V
IF %@EXT==LZH GOTO LHA_L
IF %@EXT==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 等于 9801 啦. 可是....
这样子还是不太好用呀. 那么的话. 该怎么办呢?? 写个批次档就得啦.
ECHO %1 = %@EVAL
哈! 那么那些小工具就通通可以丢掉啦... ;>
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
7. 常常有些小工具. 都是在算一份文件总共有多少行的.
现在. 4DOS 就可以帮你算啦. 就是 LINES 这个内建字元
ECHO 您指定的文件 %1 一共有 %@LINES 行
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
哈哈! 厉害吧....下次要要判断是不是彩色银幕就不用花那么大的工夫啦....
================================================================================
|