文件操作
出处:按学科分类—工业技术 企业管理出版社《工程师手册》第761页(10454字)
DOS操作系统主要且常用的功能之一是对目录及其文件的操作。DOS提供了一系列对目录和文件操作的命令,本节将按其功能对这些命令的使用方法作一介绍。
1.文件与目录
(1)文件与文件名
文件是一组相关信息的集合。在MS-DOS下所有的程序和数据都以文件的形式存储在磁盘上。为了对存储的文件进行存取和管理,每个文件都应起一个名,称为文件名。文件名由两部分组成,即文件名部分和扩展名部分,文件名部分最长为8个字符,而扩展名部分最多3个字符,这两部分中间用小数点隔开。在使用中,扩展名可以省略,但要将小数点一并省略。
MS-DOS对文件名所使用的字符有一定的限制,其中可用的字符称为合法字符,不可用的字符称为非法字符。用于文件名的合法与非法字符列于表2.1.3-1。
表2.1.3-1 用于文件名的合法与非法字符
扩展名部分一般都有一定的约定,用于代表某类文件,如COM为可执行二进制代码文件,EXE为可执行浮动代码文件,BAT为批处理文件,SYS为系统文件,BAK为后备文件,OBJ为目标文件,LIB为库文件,C为C语言源文件,PAS为PASCAL源文件,PRG为dBASE、FoxBASE程序文件等。
下面是几个合法文件名的例子:
print1.com,screen2.exe,copycont.bat,_comm.c
另外,MS-DOS把一些常用的标准外设也当作文件(被称为设备文件),以便与磁盘文件统一地进行处理。常用设备的设备文件名为:CON为控制台键盘或TPT显示器,PRN或LPT1为并行打印机,AUX或COM1为串行输入输出设备(RS232C),NUL为虚设备(不产生任何输入输出)。
(2)目录与路径
目录是DOS用于文件管理的一种形式。文件都存储在目录之下。检索文件时,首先在目录中查找是否有此文件。为了更好地管理文件,MS-DOS2.0以上版本的系统都支持树型结构目录,其结构如图2.1.3-1所示。在该图中,A是最上层目录,被称为根目录,它是由系统产生的。图中B,D,E,F,J也是目录,但它们对于上层目录来说,被称为子目录,而上层目录对于下层目录来说,可称为父目录。另外C,G,H,I,K为文件。从这个图可以看出,目录下可以产生子目录,也可存放文件。这样,就可把文件分门别类地存储,便于管理。
图2.1.3-1 树型结构目录
目录名的规定与文件名相似,只是没有扩展名而已。
多级目录结构虽然可以方便管理,但如何访问各层文件是要考虑的问题。MS-DOS给出了路径的概念,即一个路径由驱动器符、一系列目录名及文件名所组成的通往该文件的必经之路。其中目录名之间或与文件名之间用“\”号隔开。如在根目录下要访问H文件,则路径为D\H,这里省略了当前盘符和当前目录名。又如没当前目录在F上,要访问H文件,则路径应为..\..\D\H,这里“..\”表示转到父目录上,所以两个“..\”正好返同到根目录上,再经过D\H,访问到H文件。
2.目录操作方法
在MS-DOS中为目录的建立、显示、删除以及改变当前目录与设置搜索路径等操作规定了具体的命令,下面分别介绍各种操作方法。
(1)建立子目录的方法
建立子目录使用MKDIR(MD)命令。命令格式为:
MKDIR<path>或MD<path>
这里path是要建立的子目录的路径名。
下面是建立子目录的几个例子:
MDB:SUBDIR1
MDB:\SUBDIR1\SUBDIR2
这里,第1行的功能是在B盘的当前目录下建立一个名为SUBDIR1的子目录,第2行的功能是在B盘的SUBDIR1子目录下建立名为SUBDIR2的子目录。
(2)显示或改变当前目录的方法
显示或改变当前目录使用CHDIR(CD)命令。命令格式为:
CHDIR[<path>]或CD[<path>]
当省略path时,表示显示当前目录,有<path>时表示改变当前目录。下面举几个例子加以说明。
CD
CD USER
CD\USER\SUB
CD..\USER
CDD:USER
这里,第1行命令表示显示当前目录:第2行命令表示将当前目录变为当前目录所属的USER子目录;第3行命令表示把当前目录变为根目录下USER子目录下的SUB子目录(USER前的“\”代表根目录);第4行命令表示把当前目录变为与当前目录司属一个父目录的USER子目录;第5行命令表示把当前目录变为D盘的USER子目录。
(3)删除子目录的方法
删除子目录使用RMDIR(RD)命令,命令格式为:
RMDIR<path>或RD<path>
这里<path>是要删除的子目录的路径名。下面举几个例子加以说明。
RD USER
RD\USER
RD USER\SUB
RD D:USER
其中第1行命令表示删除当前目录所属的USER子目录;第2行命令表示删除根目录下的USER子目录;第3行命令表示删除当前目录所属的USER子目录下的SUB子目录;第4行命令表示删除D盘上的USER子目录。
需注意的是,被删除的子目录必须是空目录,如目录下有文件存在,应首先将文件删除掉,再执行RD命令。有关删除文件的方法将在后面介绍。
(4)显示目录结构的方法
显示目录结构使用TREE命令。其命令格式为:
TREE[d:][/A][/F]
这里,/A表示用标准ASCⅡ码显示目录结构,而不是用扩展的ASCⅡ码。/F表示在每个子目录下列出所属的所有文件的文件名;若不选,则表示只列出子目录。若目录下没有子目录和文件,将显示“None”。下面举几个例子看其使用方法。
TREE
TREEC:
TEEE/F
其中,第1行命令表示显示当前盘的目录结构;第2行命令表示显示C盘的目录结构;第3行命令表示显示当前盘目录结构的同时,将各子目录下的所有文件的文件名也列出来。
注:在4.0版本以前的DOS中无/A参数项。
(5)显示或设定搜索路径的方法
搜索路径是在执行某外部命令,而此命令又不在当前盘或当前目录下时给出的一个寻找此文件的搜索范围。显示或设定搜索路径使用PATH命令。它的命令格式为:
PATH<path1>[;<path2>……]
在此命令中,如不带参数,表示显示当前系统的命令搜索路径;而带有参数,表示是设定搜索路径功能。下面举例加以说明。
PATH
PATHC:\TURBO C
PATH C:\213;C:\FoxBASE;C:\TURBO C
这里第1行命令表示显示当前系统命令搜索路径;第2行命令表示设定C:\TURBO C子目录为命令搜索路径,即不论在哪个驱器和哪个当前目录,当执行一外部命令时,若在当前目录下不存在,则到C盘的TURBO C目录下去继续寻找,若还找不到,才显示找不到的信息;第3行命令是设定几个子目录作为搜索目录。
注:PATH只对COM,EXE,BAT文件才有作用。
(6)显示文件目录的方法
显示文件目录应使用DIR命令。该命令的格式为:
DIR[d:][path][filename][/A:[-]attr][/B][/L][/O:[-]sort][/P][/S][/W]
这里的d:为驱动器符;path是要显示的目录的完整路径;filename为文件名或文件名组;/A用于规定显示指定属性的文件,attr可为A(文档属性)、D(目录名)、H(隐式文件)、R(只读文件)、S(系统文件);-表示除attr指定属性之外的所有文件;/B表示只显示文件名和目录名;/L表示用小写字母显示文件名和目录名;/Osort表示按sort指定的排序原则显示,sort可以是D(按日期和时间排序)、E(按扩展名排序)、G(按目录名在前,文件名在后顺序排序)、N(按文件名排序)、S(按文件大小排序);“-”表示按sort中相反的顺序显示;/P表示分页显示;/S表示显示指定目录所属的所有文件名和目录名;/W表示以五列格式显示文件名和目录名。
下面举例说明DIR命令的使用方法。
DIR
DIR B:
DIR B:USER/O:N
DIR USER\*.EXE/A:R/S
DIR/P
DIR..\TXT\*.C/W
这里,第1行命令表示显示当前目录下的所有文件和子目录名;第2行命令表示显示B盘上的文件目录名;第3行命令表示按文件名字母的顺序显示B盘USER子目录下的文件名;第4行命令表示显示当前目录下的USER子目录所属的所有子目录和它们所包含的所有可执行的只读文件名;第5行命令表示按页显示当前目录下的文件名,这个功能在文件名较多时使用;第6行命令表示以每行5列的方式显示与当前目录同属一个父目录的TXT子目录下的所有C语言源文件名。
这里需要指出的是,在5.0版本以前的DOS中没有/A,/B,/L,/O,/S这五个开关。
3.文件操作方法
文件操作指的是对文件名以及文件本身的操作。文件操作是DOS中的主要功能之一,也是DOS的常用功能,所以这里将着重介绍对文件操作的各种方法。
(1)复制文件的方法
复制文件或合并文件应使用COPY命令。它的格式为:
COPY[sd:][spath][sfile][/A][/B][+][…][td:][tpath][tfile][/A][/B][/V]
这里sd:为被拷贝文件所在的驱动器;spath为被拷贝文件的路径;sfile为被拷贝的文件或文件组;/A表示文件为ASCⅡ码文件,若在sfile之后,表示拷贝只进行到文件中出现第一个文件结束符(<etrl>+<z>为止,若在tfile之后,表示在文件结束处加上一个文件结束符;/B表示文件为二进制文件;/V检查拷贝文件与源文件的异同;:d:为目标驱动器;tpath为目标路径;rfile为目标文件或文件组。
下面举例说明其使用方法。
COPY A:OPENDOS.DAT B:
COPY A:OPENDOS.DAT B:NEWDOS.DAT
COPY OPENDOS.DAT NEWDOS.*
COPY A:*.DAT B:*.OLD/V
COPY A:TEXT?,C B:
COPY B:\USER\*.PAS
COPY A:OPENDOS,DAT+CLOSEDOS.DAT B:NEWDOS.DAT
COPY OPENDOS.DAT PRN:
COPY OPENDOS.DAT CON:
COPY CON:TEXT.TXT
这里,第1行表示将A盘的OPENDOS.DAT文件拷贝到B盘;第2行表示将A盘的OPENDOS.DAT文件拷贝到B盘,并起名为NEW DOS.DAT;第3行表示将当前目录下的OPENDOS.DAT文件复制一个名为NEWDOS.DAT的文件;第4行表示将A盘上扩展名为DAT的所有文件都拷贝到B盘,并将扩展名改为OLD,同时对两文件进行比较操作;第5行表示将A盘中文件名前4个字符为TEXT的所有C语言源文件拷贝到B盘中;第6行表示将B盘USER子目录下的所有PAS源文件拷贝到当前目录中;第7行表示将A盘的OPENDOS.DAT和CLOSEDOS.DAT两文件合并后拷贝到B盘,并起名为NEWDOS.DAT;第8行表示将当前目录下的OPENDOS.DAT文件拷贝到名为PRN:的设备,即在打印机上将OPENDOS.DAT文件内容打印出来;第9行表示将当前目录下的OPENDOS.DAT文件拷贝到名为CON:的设备,即将此文件显示在显示屏上,第10行表示将设备文件CON:拷贝到当前目录下名为TEXT.TXT文件中,即将从键盘输入的任何信息都存到TEXT.TXT文件中.直至在键盘上输入<Ctrl>+<Z>为止。
需要指出的是,在拷贝过程中,如在目标盘中有同名的文件,旧文件将被新拷入的文件所覆盖,这一点请用户注意。
(2)比较文件内容的方法
若比较两个文件或两组文件的内容应使用COMP命令。它的格式为:
COMP[d1:][path1][filename1][d2:][path2][filename2][/A][/C][/D][/L][/N=X]
这里d1:,d2:为两文件分别所在的驱动器;path1,path2是访问两文件的路径;filename1,filename2是要比较的两个文件的文件名或两组文件的文件名;/A表示用ASCⅡ码显示不同之处;/C.表示比较时忽略大小写的区别;/D表示用十进制数显示不同之处;/L表示显示出发生不同之处的行号;/N=X表示只比较文件的前X行内容,即若不加N开关,COMP命令只比较长度相同的文件,不对长度不同的两文件作比较。
下面举例加以说明。
COMP MYFILE.TXT B:
COMP MYFILE.TXT B:YOURFILE.TXT
COMP A:*.TXT B:*.BAK
COMP MYFILE.TXT YOURFILE.TXT/A
COMP MYFILE.TXT*.BAK/N=80
这里,第1行表示将当前目录下的MYFILE.TXT文件与B盘上的同名文件相比较;第2行表示将当前目录下的MYFILE.TXT的文件与B盘的YOURFILE.TXT文件相比较;第3行表示将A盘的所有扩展名为TXT的文件与B盘扩展名为BAK的同名文件相比较;第4行表示将当前目录下MYFILE.TXT文件和YOURFILE.TXT文件相比较,若有不同,用ASCII码字符形式显示出来;第5行表示将MYFILE.TXT文件和它的备份文件进行前80行的比较。
需要指出的是,在5.0版本以前的DOS中,COMP命令没有/A,/C,/D,/L,/N这5个开关。
(3)显示文本文件内容的方法
要显示文本文件内容应用DOS的TYPE命令。该命令的格式为:
TYPE[d:][path]filename
这里d:表示文件所在驱动器;path指定文件的访问路径;filename为要显示文件的文件名。该命令的功能是将文本文件的内容以ASCⅡ码的形式显示出来。下面举例加以说明。
TYPE MYFILE.TXT
TYPE B:MYFILE.TXT
TYPE B:\USER\SU B\YOURFILE.TXT
这里第1行命令表示在显示器上显示当前目录下的MYFILE.TXT文件;第2行命令表示显示B盘的MYFILE.TXT文件;第3行命令表示显示B盘的USER子目录下的SUB子目录中的YOURFILE.TXT文件。
另外,在显示比较大的文件时,由于TYPE命令采取滚动显示方式,没有分屏显示功能,所以执行的结果只停留在文件的最后一屏上。为使用户能看到文件前面的信息,在TYPE命令执行过程中,可按<Ctrl>+<S>键暂停屏幕滚动,当看完这部分信息后,可再按<Ctrl>+<S>键继续显示。
(4)更改文件名的方法
更改文件名使用REN命令。命令格式为:
REN[d:][path]filename1 filename2
这里d:表示filename1文件所在的驱动器;path指定filenamel文件的访问路径;filenamel为已存在的文件名;filename2为新的文件名。下面举例加以说明。
REN MYFILE.TXT YOURFILE.TXT
REN MYFILE.TXT YOURFILE.*
REN*.DAT*.BAK
REN???.DAT???.BAK
REN A:\USER\MYFILE.TXTHISFILE.TXT
这里,第1行命令表示把当前目录下的MYFILE.TXT文件改名为YOURFILE.TXT文件;第2行命令同样是将MYFILE.TXT改名为YOURFILE.TXT;第3行命令表示把所有扩展名为DAT的文件改名为扩展名为BAK的文件;第4行命令表示把扩展名为DAT且具有三个字符的文件改名为扩展名为BAK的文件;第5行命令表示将A盘的USER子目录下的MYFILE.TXT文件改名为HISFILE.TXT文件,改名后的文件仍放在原子目录下。
需注意的是,若改名后的新文件名与指定目录下的某文件名重名,将出现错误信息,并取消REN命令操作。
(5)删除文件的方法
删除文件使用DEL命令。命令格式为:
DEL[d:][path]filename[/P]
这里,d:表示要删除文件所在的驱动器;path指定要删除文件的访问路径;filename为要删除的文件名或文件名组;也可以是一个目录,当是目录时,表示该目录下所有的文件都要被删除;/P是要删除文件所需要的再次确认开关。下面举例说明该命令的使用方法。
DELOLDFILE.TXT
DELB:\USER\OLDFILE.TXT
DEL*.DAT
DEL*.DAT/P
DEL*.*
DEL.
DELA:\USER
这里第1行命令表示删除当前目录下的OLDFILE.TXT文件;第2行命令表示删除B盘的USER子目录下的OLDFILE.TXT文件;第3行命令表示删除所有扩展名为DAT的文件;第4行命令表示删除所有扩展名为DAT的文件,但删除每个文件之前要让用户再确认一下,如果用户不想删除,可保留下来;第5行和第6行命令的功能相同,都是删除当前目录下的所有文件。在执行这两个命令时,系统都要询问是否真要删除,让用户再确认一次,以防止误操作;第7行命令表示要删除USER子目录下的所有文件,在执行这个命令时,系统同样让用户再确认一下是否真要删除。
这里需要指出的是,在4.0版本以前的DOS系统中,DEL命令没有/P开关。