我家里的第一台电脑之一运行的是一个名为 DOS 的命令行操作系统,即“磁盘操作系统”。我是在 DOS 环境中长大的,学会了利用命令行来简化我的工作。许多其他人也是如此。我们非常喜欢 DOS,以至于在 1994 年,我们创建了 FreeDOS 项目。今天,6 月 29 日,我们庆祝 FreeDOS 成立 28 周年。
如果您是 FreeDOS 的新手,您可能会对如何使用随附的各种命令行程序感到困惑。让我们从我最喜欢的 26 个 FreeDOS 命令开始。要了解更多信息,请在大多数命令后添加 /? 选项以获取更多信息。
C:\>attrib /?
ATTRIB v2.1 - Displays or changes file attributes.
Copyright (c) 1998-2003, licensed under GPL2.
Syntax: ATTRIB { options | [path][file] | /@[list] }
Options:
+H Sets the Hidden attribute. -H Clears the Hidden attribute.
+S Sets the System attribute. -S Clears the System attribute.
+R Sets the Read-only attribute. -R Clears the Read-only attribute.
+A Sets the Archive attribute. -A Clears the Archive attribute.
/S Process files in all directories in the specified path(es).
/D Process directory names for arguments with wildcards.
/@ Process files, listed in the specified file [or in stdin].
Examples:
attrib file -rhs
attrib +a -r dir1 dir2*.dat /s
attrib -hs/sd /@list.txt *.*
A 代表 ATTRIB
ATTRIB
程序显示或更改文件的属性。属性可以是以下四个值之一:隐藏 (H)、系统 (S)、只读 (R) 和存档 (A)。
标记为隐藏的文件不会显示在目录列表中。例如,假设您想“隐藏”一个名为 SECRET.TXT
的文件,这样就不会有人知道它的存在。首先,您可以显示该文件的属性以查看其当前设置。
C:\FILES>attrib secret.txt
[----A] SECRET.TXT
要隐藏此文件,请使用加号 (+
) 运算符启用隐藏属性,如下所示:
C:\FILES>attrib +h secret.txt
[----A] -> [-H--A] SECRET.TXT
C:\FILES>dir
Volume in drive C is FREEDOS2022
Volume Serial Number is 333D-0B18
Directory of C:\FILES
. <DIR> 05-27-2022 9:22p
.. <DIR> 05-27-2022 9:22p
0 file(s) 0 bytes
2 dir(s) 279,560,192 bytes free
ATTRIB
的另一种常见用法是操作只读属性,这样您就不会意外覆盖重要的文件。假设您想保护 SECRET.TXT
文件,以便您无法删除或更改它。使用 +R
修饰符启用只读属性,如下所示:
C:\FILES>attrib +r secret.txt
[----A] -> [---RA] SECRET.TXT
C:\FILES>del secret.txt
C:\FILES\SECRET.TXT: Permission denied
no file removed.
[ 相关阅读: 我如何在 Linux 文件系统中使用 attr 命令 ]
B 代表 BEEP
如果您需要在批处理文件中添加一些活力,您可以使用 BEEP
命令来引起用户的注意。BEEP
不会在屏幕上显示任何内容,而只是发出经典的“哔”声。
请注意,BEEP
使用 PC 的内置扬声器发出“哔”声。如果您使用虚拟机引导 FreeDOS,请检查您的系统是否设置为正确模拟 PC 扬声器。否则,您将听不到任何声音。
C 代表 CD
与 Linux 一样,FreeDOS 支持目录,这允许您以对您有意义的方式组织文件。例如,您可以将所有文件保存在名为 FILES
的目录中,并且您可以在 FILES
中拥有其他目录,用于存放某些类型的文件,例如 DOCS
用于文字处理器文件,或 SPRDSHT
用于电子表格文件。
您可以使用 CD
或更改目录命令导航到目录中。如果您喜欢使用该语法,则 CHDIR
命令与 CD
相同。
要更改到新目录,请将 CD
命令与目标目录一起使用。
C:\>cd files
C:\FILES>cd sprdsht
C:\FILES\SPRDSHT>dir
Volume in drive C is FREEDOS2022
Volume Serial Number is 333D-0B18
Directory of C:\FILES\SPRDSHT
. <DIR> 05-27-2022 9:59p
.. <DIR> 05-27-2022 9:59p
FIB WKS 2,093 05-27-2022 10:07p
LAB1 WKS 2,087 05-27-2022 10:10p
MIS100 WKS 2,232 05-27-2022 10:05p
3 file(s) 6,412 bytes
2 dir(s) 279,527,424 bytes free
您不必一次导航一个目录。您可以改为提供要更改到的完整目录路径,使用一个 CD
命令。
C:\>cd \files\sprdsht
C:\FILES\SPRDSHT>dir
Volume in drive C is FREEDOS2022
Volume Serial Number is 333D-0B18
Directory of C:\FILES\SPRDSHT
. <DIR> 05-27-2022 9:59p
.. <DIR> 05-27-2022 9:59p
FIB WKS 2,093 05-27-2022 10:07p
LAB1 WKS 2,087 05-27-2022 10:10p
MIS100 WKS 2,232 05-27-2022 10:05p
3 file(s) 6,412 bytes
2 dir(s) 279,527,424 bytes free
D 代表 DELTREE
如果您需要删除单个文件,可以使用 DEL
命令。要删除空目录,可以使用 RMDIR
或 RD
命令。但是,如果您想删除一个包含大量文件和子目录的目录怎么办?
包含其他目录的目录称为目录树。您可以使用 DELTREE
命令删除整个目录树。例如,要删除您的 FILES
目录,包括它包含的所有文件和目录,请键入以下命令:
C:\>deltree files
[DEFAULT-BUILD v1.02g] of DELTREE. The "ROOT-SAFETY-CHECK" is enabled.
Delete directory "C:\FILES"
and all its subdirectories?
[Y] [N] [Q], [ENTER] ? Y
==> Deleting "C:\FILES" ...
您可以使用单个 DELTREE
命令轻松快速地清除大量工作,因此 FreeDOS DELTREE
会提示您询问这是否真的是您想要做的事情。请谨慎使用此命令。
E 代表 EDIT
如果您需要在 FreeDOS 上编辑文本文件,EDIT
程序可以让您快速轻松地完成此操作。例如,要开始编辑名为 HELLO.TXT
的文件,请键入 EDIT HELLO.TXT
。如果 HELLO.TXT
文件已经存在,则 EDIT
会打开该文件以进行编辑。如果 HELLO.TXT
尚不存在,则 EDIT
会为您启动一个新文件。

(Jim Hall, CC BY-SA 40)
FreeDOS EDIT
使用友好的界面,对于大多数人来说应该很容易使用。使用菜单访问 EDIT 的各种功能,包括保存文件、打开新文件或退出编辑器。要访问菜单,请点击键盘上的 Alt 键,然后使用箭头键四处移动,然后按 Enter 键选择一个操作。

(Jim Hall, CC BY-SA 40)
F 代表 FIND
如果您需要在文件中查找文本,FIND
命令可以完成这项工作。类似于 Linux 上的 fgrep
,FIND
打印包含字符串的行。例如,要检查 FDCONFIG.SYS
文件中的“Menu Default”条目,请像这样使用 FIND
。
C:\>find "MENUDEFAULT" fdconfig.sys
---------------- FDCONFIG.SYS
MENUDEFAULT=2,5
如果您不确定要查找的字符串是否使用大写或小写字母,请添加 /I
选项以忽略字母大小写。
C:\>find /i "menudefault" fdconfig.sys
---------------- FDCONFIG.SYS
MENUDEFAULT=2,5
[ 下载速查表: Linux find 命令 ]
G 代表 GRAPHICS
如果要捕获屏幕,可以使用键盘上的 PrtScr(打印屏幕)键将监视器上的文本直接打印到打印机。但是,这仅适用于纯文本。如果要打印图形屏幕,则需要加载 GRAPHICS
程序。
GRAPHICS
支持不同的打印机类型,包括 HP PCL 打印机、Epson 点阵打印机和 PostScript 兼容打印机。例如,如果您的计算机连接了 HP 激光打印机,则可以通过键入以下命令来加载对该打印机的支持:
C:\>graphics hpdefault
Running in MS GRAPHICS compatibility mode...
Using HPPCL type for type hpdefault
If you think this is not correct, mail me (see help text).
Printing black as white and white as black
which internally uses /I of this GRAPHICS.
You can use the following command directly instead of
GRAPHICS [your options] in the future:
LH GRAPH-HP /I
Note that GRAPH-HP allows extra options:
/E economy mode, /1 use LPT1, /2 use LPT2, /3 use LPT3,
/R for random instead of ordered dither
/C for 300dpi instead of 600dpi
Driver to make 'shift PrtScr' key work
even in CGA, EGA, VGA, MCGA graphics
modes loaded, in HP PCL mode.
H 代表 HELP
如果您是 FreeDOS 的新手,可以通过键入 HELP
来获得有关如何使用不同命令的提示。这将调出 FreeDOS 帮助系统,其中包含所有命令的文档。

(Jim Hall, CC BY-SA 40)
[ 另请阅读: 您需要知道的唯一 Linux 命令 ]
I 代表 IF
您可以使用 IF
语句向命令行或批处理文件添加条件语句。IF
进行简单的测试,然后执行单个命令。例如,如果某个文件存在,要打印结果“It's there”,您可以键入:
C:\>if exist kernel.sys echo It's there
It's there
如果您想测试相反的情况,请在测试前使用 NOT
关键字。例如,如果两个字符串的值不相同,要打印“Not equal”,请键入以下内容:
C:\>if not "a"=="b" echo Not equal
Not equal
J 代表 JOIN
早期版本的 DOS 相当简单;DOS 的第一个版本甚至不支持目录。为了为那些较旧的程序提供向后兼容性,我们提供了 JOIN
程序作为一种巧妙的解决方法。JOIN
用驱动器号替换路径,因此您可以将旧程序放在自己的子目录中,但使用单个驱动器号访问它。
假设您有一个名为 VC
的旧应用程序,它不理解目录。要继续使用 VC
,您可以将其路径“连接”到驱动器号。例如:
JOIN V: D:\VC
FreeDOS 将 JOIN
实现为 SWSUBST
,它还结合了来自类似 SUBST
命令的功能。要将 D:\VC
路径连接到名为 V:
的新驱动器号,请键入:
C:\>swsubst v: d:\vc
C:\>dir v:
Volume in drive V is DATA
Volume Serial Number is 212C-1DF8
Directory of V:\
. <DIR> 02-21-2022 10:35p
.. <DIR> 02-21-2022 10:35p
VC COM 27,520 07-14-2019 4:48p
1 file(s) 27,520 bytes
2 dir(s) 48,306,176 bytes free
K 代表 KEYB
默认情况下,DOS 假定使用美国键盘布局。如果您的键盘不同,可以使用 KEYB
命令加载新的键盘语言布局。例如,要加载德语键盘布局,请键入:
C:\>keyb gr
FreeDOS KEYB 2.01 - (c) Aitor Santamaría Merino - GNU GPL 2.0
Keyboard layout : C:\FREEDOS\BIN\KEYBOARD.SYS:GR [858] (3)
L 代表 LABEL
FreeDOS 使用标签来命名每个软盘驱动器和硬盘驱动器。这些标签提供了一种方便的方法来识别磁盘可能包含的内容。当您需要在许多不同的软盘上存储文件时,LABEL
命令非常有用,您可以将一个软盘标记为“Data”,将另一个软盘标记为“Games”。
要将新标签分配给驱动器,或更改驱动器上的现有标签,请像这样使用 LABEL:
D:\>label d: data
D:\>dir /w
Volume in drive D is DATA
Volume Serial Number is 212C-1DF8
Directory of D:\
[123] [ABILITY] [ASEASY] [GAMES2] [QUATTRO]
[SRC] [TEMP] [THE] [VC] [WORD]
[WS400] EDLIN16.EXE EDLIN32.EXE MYENV.BAT
3 file(s) 113,910 bytes
11 dir(s) 48,306,176 bytes free
M 代表 MEM
运行程序和加载驱动程序需要内存。要查看您的系统有多少内存,以及有多少内存可用于运行 DOS 程序,请使用 MEM
命令。
C:\>mem
Memory Type Total Used Free
---------------- -------- -------- --------
Conventional 639K 11K 628K
Upper 104K 18K 86K
Reserved 281K 281K 0K
Extended (XMS) 15,224K 537K 14,687K
---------------- -------- -------- --------
Total memory 16,248K 847K 15,401K
Total under 1 MB 743K 29K 714K
Total Expanded (EMS) 8,576K (8,781,824 bytes)
Free Expanded (EMS) 8,192K (8,388,608 bytes)
Largest executable program size 628K (643,104 bytes)
Largest free upper memory block 84K ( 85,728 bytes)
FreeDOS is resident in the high memory area.
N 代表 NANSI
如果您想为 FreeDOS 命令行添加一些颜色,可以使用 ANSI 转义序列。这些序列之所以这样命名,是因为每个序列都以代码 33(ESC
字符)和由美国国家标准协会 (ANSI) 定义的特殊字符序列开头。
FreeDOS 通过 NANSI.SYS
驱动程序支持 ANSI 转义序列。加载 NANSI
后,您的 FreeDOS 控制台会解释 ANSI 转义序列,例如设置文本颜色。

(Jim Hall, CC BY-SA 40)
O 代表 oZone
FreeDOS 是一个命令行操作系统,但有些人更喜欢使用图形用户界面。这就是 FreeDOS 1.3 包含多个图形桌面的原因。我喜欢的一个桌面叫做 oZone,它提供了一个时尚、现代的界面。

(Jim Hall, CC BY-SA 40)
请注意,oZone有一些烦人的错误,并且需要开发人员的关注。如果您有兴趣让oZone变得更好,请随时下载源代码。
P 代表 PROMPT
标准的FreeDOS命令行提示符会告诉您在文件系统中的位置。当您第一次启动FreeDOS时,您的提示符看起来像 C:\>
,这意味着“C:”驱动器上的“\”(根)目录。“>”字符表示您可以在此处键入命令。
如果您希望提示符上显示不同的信息,请使用PROMPT
命令更改它。您可以使用以$
开头的特殊代码来表示不同的信息,例如$D
表示日期,$T
表示时间。例如,您可以使用$$
指令使您的FreeDOS命令行看起来像Linux提示符,该指令会打印一个美元符号。
C:\>prompt $$
$
键入PROMPT /?
以查看所有特殊代码的列表。
Q 代表 QBASIC
FreeDOS实际上没有QBASIC。那是一个用于MS-DOS的专有BASIC编程环境。相反,我们提供了几个开源编译器,包括一些用于BASIC编程的编译器。
FreeBASIC编译器应该可以编译大多数QBASIC程序。这是一个简单的“猜数字”示例
dim number as integer
dim guess as integer
randomize timer
number = int( 10 * rnd() ) + 1
print "Guess the number from 1 to 10:"
do
input guess
if guess < number then print "Too low"
if guess > number then print "Too high"
loop while guess <> number
print "That's right!"
使用FBC
命令使用FreeBASIC编译程序
C:\DEVEL\FBC>fbc guess.bas
这是一个简单游戏的快速演示
C:\DEVEL\FBC>guess
Guess the number from 1 to 10:
? 5
Too high
? 3
Too low
? 4
That's right!
[ 下一步阅读: 通过编写“猜数字”游戏学习Fortran ]
R 代表 REM
注释在编写程序时非常有用;注释可以帮助我们理解程序应该做什么。您可以使用REM
命令在批处理文件中执行相同的操作。REM
之后的任何内容都会在批处理文件中被忽略。
REM this is a comment
S 代表 SET
FreeDOS命令行使用一组称为环境变量的变量,这些变量允许您自定义系统。您可以使用SET
命令设置这些变量。例如,使用DIRCMD
变量来控制DIR
如何排列目录列表。要设置DIRCMD
变量,请使用SET
命令
SET DIRCMD=/O:GNE
这告诉DIR
按 (O) 顺序输出,首先分组 (G) 目录,然后按名称 (N) 和扩展名 (E) 对结果进行排序。
T 代表 TYPE
TYPE
命令是最常用的DOS命令之一。TYPE
显示文件的内容,类似于Linux上的cat
。
C:\DEVEL>type hello.c
#include <stdio.h>
int
main()
{
puts("Hello world");
return 0;
}
U 代表 UNZIP
在Linux上,您可能熟悉标准的Unix存档命令:tar
。 FreeDOS上也有一个tar版本(以及许多其他流行的存档程序),但DOS上事实上的标准存档程序是ZIP
和UNZIP
。两者都默认安装在FreeDOS 1.3中。
假设我有一个包含一些文件的zip存档。如果我想提取整个Zip文件,我可以只使用UNZIP
命令,并将Zip文件作为命令行选项提供。这将从我当前的工作目录开始提取存档。除非我要恢复之前的某个版本,否则我通常不想覆盖我当前的文件。在这种情况下,我会想将存档提取到一个新目录。您可以使用-d
(“目标”)命令行选项指定目标路径
D:\SRC>unzip monkeys.zip -d monkeys.new
Warning: TZ environment variable not found, cannot use UTC times!!
Archive: monkeys.zip
creating: monkeys.new/monkeys/
inflating: monkeys.new/monkeys/banana.c
inflating: monkeys.new/monkeys/banana.obj
inflating: monkeys.new/monkeys/banana.exe
creating: monkeys.new/monkeys/putimg/
inflating: monkeys.new/monkeys/putimg/putimg.c
inflating: monkeys.new/monkeys/putimg/putimg.obj
inflating: monkeys.new/monkeys/putimg/putimg.exe
要了解有关ZIP
和UNZIP
命令的更多信息,请阅读 如何在FreeDOS上存档文件。
V 代表 VER
在DOS的旧时代,VER
命令报告您正在运行的DOS发行版,例如“MS-DOS 5.0.D”。对于FreeDOS,VER
命令会提供更多详细信息,例如FreeDOS Shell的版本
C:\DEVEL>ver
FreeCom version 0.85a - WATCOMC - XMS_Swap [Jul 10 2021 19:28:06]
如果您还想查看FreeDOS内核版本和DOS兼容级别,请添加/R
选项
C:\DEVEL>ver /r
FreeCom version 0.85a - WATCOMC - XMS_Swap [Jul 10 2021 19:28:06]
DOS version 7.10
FreeDOS kernel 2043 (build 2043 OEM:0xfd) [compiled May 14 2021]
W 代表 WHICH
FreeDOS命令行可以从PATH
变量中标识的不同目录列表中运行程序。您可以使用WHICH
命令来准确识别程序的位置。只需键入WHICH
加上您要查找的程序的名称
C:\>which xcopy
xcopy C:\FREEDOS\BIN\XCOPY.EXE
X 代表 XCOPY
COPY
命令仅将文件从一个位置复制到另一个位置。如果您想扩展复制以包括任何目录,请改用XCOPY
命令。我通常添加/E
选项以包含所有子目录,包括空目录,这样我就可以复制整个目录树。这可以有效地备份我正在进行的任何项目
D:\SRC>xcopy /e monkeys monkeys.bak
Does MONKEYS.BAK specify a file name
or directory name on the target (File/Directory)? d
Copying D:\SRC\MONKEYS\PUTIMG\PUTIMG.C
Copying D:\SRC\MONKEYS\PUTIMG\PUTIMG.OBJ
Copying D:\SRC\MONKEYS\PUTIMG\PUTIMG.EXE
Copying D:\SRC\MONKEYS\BANANA.C
Copying D:\SRC\MONKEYS\BANANA.OBJ
Copying D:\SRC\MONKEYS\BANANA.EXE
6 file(s) copied
Y 代表 Yellow(黄色)
这不是一个命令,而是关于DOS如何显示颜色的有趣花絮。如果您仔细观察过FreeDOS,您可能已经注意到文本颜色只有有限的范围 - 十六种文本颜色和八种背景颜色。
IBM 5153彩色显示器通过以不同的亮度水平点亮微小的红色、绿色和蓝色荧光点向用户呈现颜色,从而创建了16种文本颜色和8种背景颜色的调色板。早期的PC只能以“正常强度”级别显示背景颜色;只有文本颜色才能使用鲜艳的颜色。
如果您查看文本颜色,您会发现黑色、蓝色、绿色、青色、红色、品红色、橙色和白色。这些颜色的“鲜艳”版本是鲜艳的黑色(暗灰色)、鲜艳的蓝色、鲜艳的绿色、鲜艳的青色、鲜艳的红色、鲜艳的品红色、黄色和鲜艳的白色。橙色的“鲜艳”版本实际上是黄色。没有“鲜艳的橙色”。
如果您想了解更多关于文本颜色的信息,请阅读我们关于为什么FreeDOS有16种颜色的文章。
Z 代表 ZIP
您可以在DOS命令行中使用ZIP
创建文件和目录的存档。这是一种方便的方式来备份您的工作或发布一个“包”以便在未来的FreeDOS发行版中使用。例如,假设我想备份我的项目源代码,其中包含这些源文件
D:\SRC>zip -9r monkeys.zip monkeys
zip warning: TZ environment variable not found, cannot use UTC times!!
adding: monkeys/ (stored 0%)
adding: monkeys/banana.c (deflated 66%)
adding: monkeys/banana.obj (deflated 26%)
adding: monkeys/banana.exe (deflated 34%)
adding: monkeys/putimg/ (stored 0%)
adding: monkeys/putimg/putimg.c (deflated 62%)
adding: monkeys/putimg/putimg.obj (deflated 29%)
adding: monkeys/putimg/putimg.exe (deflated 34%)
ZIP 有大量的命令行选项来执行不同的操作,但我最常用的命令行选项是-r
以递归方式处理目录和子目录,以及-9
以提供最大可能的压缩。ZIP
和UNZIP
使用类似于Unix的命令行,因此您可以将选项组合在短划线后面:-9r
提供最大压缩并将子目录包含在Zip文件中。
有关如何使用ZIP
和UNZIP
命令的更多详细信息,请阅读 如何在FreeDOS上存档文件。
新的FreeDOS指南
准备好进行FreeDOS之旅的下一步了吗?查看我们的新电子书并立即开始使用FreeDOS进行实验!
1 条评论