附錄三 簡單的 DOS 指令

DOS 提示符號

在 1995 年之前,無疑的 DOS 是個人電腦上使用最多的作業系統,大部分使用個人電腦的人都要會一點點 DOS 指令,其實 DOS 是很簡單操作的。如果你一開機就進入 DOS 5.x/6.x 或是在 Windows 9x 的 MS-DOS 模式,大部分情形都會出現如 X:\YYY> 的字樣,並在底下有一個游標閃爍,這表示你現在是在 DOS 提示下,DOS 已經準備好等待接受你的命令工作了。這個 X: 是一個英文字,代表磁碟機名稱,直到現在 Windows 9x 都還這樣表示﹔而 YYY 代表你現在的目錄,如果只有 \ 而沒有 YYY,表示現在在根目錄(最上面一層目錄)。

在 DOS 堙A每一個磁碟機都有一個獨一無二的根目錄,根目錄表示方式就是僅僅一個 \ 而已。根目錄可以存放檔案,也可以存放另一個目錄,這個目錄稱為子目錄,而子目錄堣S可以再存放子目錄(其實是孫目錄,但似乎沒人這樣稱呼),好像大樹的根一樣。不管是根目錄或子目錄都可以存放檔案或目錄。

察看檔案:DIR

那我們要怎樣才能知道這個目錄埵陪些檔案或子目錄呢?就是用 dir 來察看。在 DOS 模式下輸入 dir 試試看(所有的 DOS 指令大小寫均視為相同的,一般而言,DOS 提示下的字都是白色的,此處為了說明,黃色的字是你要輸入的部分,而每一次輸入完指令後還要按下 Enter 鍵,指令才會執行。)

C:\>dir [Enter]

 Volume in drive C is WINDOW98SE
 Volume Serial Number is 1767-18EF
 Directory of C:\

COMMAND  COM        94,292  05-05-99  22:22 COMMAND.COM
FRUNLOG  TXT         1,005  01-29-02  23:41 FRUNLOG.TXT
WINDOWS        <DIR>        01-29-02  17:30 WINDOWS
NETLOG   TXT         6,034  01-29-02  23:49 NETLOG.TXT
CONFIG   SYS            68  01-31-02   2:34 CONFIG.SYS
UPG502L        <DIR>        01-30-02   0:34 UPG502L
AUTOEXEC BAT             0  01-29-02  23:50 AUTOEXEC.BAT
MYDOCU~1       <DIR>        01-29-02  23:52 My Documents
PROGRA~1       <DIR>        01-29-02  17:30 Program Files
MEDIA          <DIR>        01-30-02   0:08 Media
HANIN          <DIR>        01-31-02   2:36 HANIN
SCANDISK LOG         4,247  02-02-02  20:19 SCANDISK.LOG
         6 file(s)        105,646 bytes
         6 dir(s)   1,972,842,496 bytes free
此處是筆者電腦中的 C: 磁碟機根目錄的檔案及子目錄,第一、二行分別告訴你這個磁碟機名稱叫 WINDOWS98SE 和序號,第三行告訴你現在所顯示的內容是那個目錄。以下就是這個目錄堛瑰仵蚺峇l目錄。第一欄就是檔名,如 COMMAND.COM、FRUNLOG.TXT 等等,其中標有 <DIR> 顯然就是子目錄。第二欄就是檔案大小,例如 COMMAND.COM 大小就是 94,292 位元組(bytes)。第三欄是建檔時間,例如 COMMAND.COM 建於 1999 年五月五日,22 時 22 分。最後一欄是在 Windows 9x 的檔名,原來在 DOS 底下的檔名只能有 8 個字組成主檔名,後面再加上 3 個字的副檔名,這 11 個字可以是英文字母、數字、底線等等組成,當然這樣是很不方便的,不能完整表達這個檔案代表什麼意義,所以 Windows 9x 將這些缺點改進了。

當檔案太多時,DOS 才不管你是否來得及看完,前面的檔案馬上由下往上移動,消失在第一行,這時可以在 dir 後加上 /p 來幫助觀察,這時 DOS 每顯示 22 個檔案就會暫停,等你按任何一個鍵才繼續顯示下面 22 個檔案,這個『p』就是頁(page)的意思。DOS 稱這個『/』後的命令為參數,此外還可以加上 『/w』,這個參數,請自己試試了。

事實上 DIR 還有許多參數可供使用,你可以用『DIR /?』來看看還有那些用法,其他的指令也可以加上『/?』這個參數來看看說明。

改變目錄:CD

那如果我還想看看 MYDOCU~1 子目錄的內容,該如何呢?有兩個方法,第一個是 dir mydocu~1,第二個方法是切換到 MYDOCU~1 子目錄內,再用 dir 觀看。切換目錄的指令是 cd(cd 是 change directory 的簡寫,也可用chdir) ,試試看吧!

C:\>cd mydocu~1 [Enter]

dir [Enter]

 Volume in drive C is WINDOW98SE
 Volume Serial Number is 1767-18EF
 Directory of C:\My Documents

.              <DIR>        01-29-02  23:52 .
..             <DIR>        01-29-02  23:52 ..
DESKTOP  INI            19  01-31-02   2:27 desktop.ini
         1 file(s)             19 bytes
         2 dir(s)   1,972,842,496 bytes free
當改變目錄時,DOS 的提示符號也會自動改成現在目錄,這個子目錄有三個目錄和一個檔案。注意到這個目錄堛澈e兩個子目錄是『.』和『..』,她們有特別的含意,前者代表這個目錄,後者代表上一層目錄。

建立目錄:MD

若是想建立一個子目錄,指令為 md(就是 make directory 之意)

刪除目錄:RD

刪除目錄的指令為 rd(就是 remove directory 之意),這兩個指令不難,請自己試試。

變更現行磁碟機:X:

DOS 提示符號告訴我們現在的磁碟機及一連串目錄名稱,如果不特別指明的話,所有處理的檔案都是在這個磁碟機下的這個目錄內,此磁碟機和目錄稱為現行磁碟機和現行目錄。例如上面的例子,DOS 提示符號為 C:\My Documents>,當我下 dir 指令時,DOS 就會列出這個目錄的檔案。那如何處理軟碟機 A: 或其他硬碟、光碟的檔案呢?

其實有兩種方法,一種是在指令後接上要處理的磁碟機、目錄及檔名,例如『dir d:』。第二種方法是先變更磁碟機及目錄,變更磁碟機的方法就是輸入磁碟機名,不要忘了每個磁碟機名後面都有『:』。例如:

C:\My Documents>i: [Enter]

I:\>dir [Enter]

 Volume in drive I is DATA_2
 Volume Serial Number is 256D-08FB
 Directory of I:\

MOVIES         <DIR>        02-04-02   2:08 MOVIES
TEST_NB        <DIR>        02-04-02  14:50 TEST_NB
SHARE          <DIR>        02-04-02  15:32 SHARE
         0 file(s)              0 bytes
         3 dir(s)        8,800.12 MB free

更改檔名:REN

好了,如果我要更改檔名應如何做呢?用 ren 吧(rename 的簡寫)。她的用法是

ren 舊檔名 新檔名
看看下面的例子:( 但 DESKTOP.INI 似乎是系統要用的,因此實驗後最好再改回來 )
C:\My Documents>ren desktop.ini x.ini [Enter]

C:\My Documents>dir [Enter]

 Volume in drive C is WINDOW98SE
 Volume Serial Number is 1767-18EF
 Directory of C:\My Documents

.              <DIR>        01-29-02  23:52 .
..             <DIR>        01-29-02  23:52 ..
X                       19  01-31-02   2:27 x
         1 file(s)             19 bytes
         2 dir(s)   1,972,842,496 bytes free

C:\My Documents>ren x desktop.ini [Enter]

刪除檔案:DEL/ERASE

刪除檔案呢?用 del 吧!( 也可以用 erase,用法都是相同的 ) 她的用法是
del 檔案名

複製檔案:COPY

那複製檔案呢?當然是 copy 囉!台灣經濟奇蹟幕後的無名英雄……啊 COPY 啦!她的用法是
copy 要複製的檔案 複製的目的檔名
例如:用 copy desktop.ini mymusi~1\desktop.ini,可把 DESKTOP.INI 複製到 MYMUSI~1 子目錄內。其實如果複製後的目的檔名不變時『\desktop.ini』可省略,就用copy desktop.ini mymusi~1 即可,複製後 mymusi~1 會有一個一模一樣的 DESKTOP.INI。

copy desktop.ini d:\,就是將 DESKTOP.INI 複製到 D: 磁碟的根目錄。

總之,『複製的目的檔名』可以包含磁碟機名和一層又一層的子目錄名,例如 copy desktop.ini d:\win98\backup\ini\ 是將 DESKTOP.INI 複製到 D: 磁碟的根目錄下的 WIN98 子目錄下的 BACKUP 子目錄下的 INI 子目錄,複製後 INI 子目錄會有一個一模一樣的 DESKTOP.INI,要注意的是這些目錄都要存在,否則會錯誤。此外還有一點很重要,如果 INI 子目錄不存在,而你又省略了最後一個『\』,那 DOS 會認為要將 DESKTOP.INI 複製成 INI 檔案了,複製完之後,BACKUP 媟|有一個 INI 檔和 DESKTOP.INI 一樣。

其實有許多和檔案有關的操作,都有類似上面的觀念。例如現在 DOS 提示符號是在 C:\,而在 C:\WINDOWS\TEMP 子目錄下有一個GLF92F4.TMP要刪除,可以像下面的操作,直接下 del \windows\temp\glf92f4.tmp 刪除

C:\>dir windows\temp [Enter]

 Volume in drive C is WINDOW98SE
 Volume Serial Number is 1767-18EF
 Directory of C:\WINDOWS\TEMP

.              <DIR>        01-29-02  23:40 .
..             <DIR>        01-29-02  23:40 ..
ADDR-M~1       <DIR>        01-31-02  14:48 addr-migrate
ADDR-M~2       <DIR>        01-31-02  14:48 addr-migrate-1
ADDR-M~3       <DIR>        01-31-02  14:48 addr-migrate-2
JRE_IN~1 TXT             7  01-31-02  14:41 jre_install.txt
ADDR-M~4       <DIR>        01-31-02  14:48 addr-migrate-3
GLF92F4  TMP         9,728  01-21-99  14:40 GLF92F4.TMP
         2 file(s)          9,735 bytes
         6 dir(s)   1,972,842,496 bytes free

C:\>del \windows\temp\glf92f4.tmp [Enter]

C:\>dir \windows\temp [Enter]

 Volume in drive C is WINDOW98SE
 Volume Serial Number is 1767-18EF
 Directory of C:\WINDOWS\TEMP

.              <DIR>        01-29-02  23:40 .
..             <DIR>        01-29-02  23:40 ..
ADDR-M~1       <DIR>        01-31-02  14:48 addr-migrate
ADDR-M~2       <DIR>        01-31-02  14:48 addr-migrate-1
ADDR-M~3       <DIR>        01-31-02  14:48 addr-migrate-2
JRE_IN~1 TXT             7  01-31-02  14:41 jre_install.txt
ADDR-M~4       <DIR>        01-31-02  14:48 addr-migrate-3
         1 file(s)              7 bytes
         6 dir(s)   1,977,049,088 bytes free
小木偶在第二次檢查是否真的刪除 GLF92F4.TMP 時,輸入的指令和第一次未刪除前比較,多了一個『\』,其結果是一樣的,這是因為現在DOS提示符號在 C:\,而 LF92F4.TMP 是在 C:\ 下的一個子目錄內,所以用不用『\』結果是相同的,DOS 會由現在提示符號下的目錄去尋找我們指定目錄是否有這個檔案。

像這種由磁碟機名稱及數個子目錄所構成,並且每個子目錄之間以『\』分隔的字串,稱為路徑名 ( path ),而路徑名如果是從根目錄開始一直到我們所指定的檔案為止,稱為絕對的,不管 DOS 提示符號是在那一個磁碟機或是那一個目錄都可以直接指定這個檔案。如果路徑名是從 DOS 提示符號的這個目錄開始,稱為相對的,只能從 DOS 提示符號現行所顯示的目錄才能操作這個檔案,否則就會找不到這個檔案。

例如,小木偶的 C:\WINDOWS\TEMP\JRE_IN~1.TXT 這個檔案是絕對路徑,若我在 D:\ 下指令如下

C:\>d: [Enter]

D:\>dir c:\windows\temp\jre_in~1.txt [Enter]

 Volume in drive C is WINDOW98SE
 Volume Serial Number is 1767-18EF
 Directory of C:\WINDOWS\TEMP

JRE_IN~1 TXT             7  01-31-02  14:41 jre_install.txt
         1 file(s)              7 bytes
         0 dir(s)   1,977,049,088 bytes free

D:\>dir \temp\jre_in~1.txt [Enter]

 Volume in drive D is WINDOWS_3_1
 Volume Serial Number is 2D34-0E0A
Path not found
第二次的 DIR 指令就找不著了,這是因為 DOS 會去找 D: 的根目錄是否有 TEMP\JRE_IN~1.TXT,而不會去 C: 找,雖然如此,相對路徑卻能幫我們省許多打字的時間。

顯示 DOS 版本

如果要顯示 DOS 版本用
VER
這個指令還有一個參數『/r』,起看下面的例子:
C:\>ver /r [Enter]

Windows 98 [Version 4.10.2222]
Revision A
DOS is in HMA

改變日期與時間:DATE 與 TIME

於 DOS 提示下輸入『DATE』並按下 Enter 鍵後會現顯示現在日期,再問您要修改的日期,若您反悔的話,可直接按 Enter 鍵不作修改,否則就照提示的格式輸入日期。
C:\>date [Enter]
Current date is Fri 02-08-2002
Enter new date (mm-dd-yy):[Enter]
TIME 指令和 DATE 類似,就不再敘述。

清除螢幕:CLS

就是將螢幕清除,並將游標移至最上面一行的最左邊。它是 clear screen 的縮寫。

在螢幕上印出檔案內容:TYPE

使用語法是:
type 檔名
例如你想看看 C:\WINDOWS\ 內的 FAQ.TXT 檔案內容(它是 WINDOWS 98 SE 內的常見問題與答案),就可以用
C:\>type c:\windows\faq.txt [Enter]
-------------------------------------------------
      Microsoft Windows 98 第二版
             常見問題 README 檔案
                 1999 年 4 月
-------------------------------------------------

(c) Copyright Microsoft Corporation, 1999


本文件將提供最新的資訊,以補充 Microsoft Windows 98 第二版文件的不足之處。

--------------
如何使用本文件
--------------

要在記事本的螢幕上檢視 FAQ.txt,請將記事本視窗放到最大。

此檔案太大了,故只列出部份內容。

設定路徑:PATH

在 DOS 系統堛漫R令事實上可分為兩種:內部命令 ( internal command ) 以及外部命令 ( external command )。DOS 是將一些常用的指令,例如上面所說的命令,如 DIR、COPY、REN 等都屬於內部命令。而較少用的命令,大都屬於外部命令,如 DOS 磁片上所附的工具程式,如 DISKCOPY 就屬於外部命令。當使用者輸入一個 DOS 命令之後,該命令會經由 COMMAND.COM 分析,COMMAND.COM 的功能就是判斷使用者所輸入的命令,是內部命令還是外部命令。倘若是內部命令,隨即交給 IO.SYS 或 MSDOS.SYS 處理。但若是外部命令,則到磁碟上找尋與使用者所輸入的命令相同檔名的可執行檔案,若是找到了,則將控制權轉交到該可執行檔,執行該命令。如果找不到該可執行檔,螢幕上便會無情的出現『Bad Command or filename』。也就是說,要執行某個可執行檔,必須輸入該可執行檔的檔名。( 只需輸入主檔名即可,副檔名,如 EXE、COM 不須輸入 )

問題來了,在磁碟機底下,必定有許多子目錄,那麼 DOS 是在哪個子目錄尋找使用者輸入的可執行檔呢?原來 DOS 會先在現行目錄下尋找,再到 PATH 所指定的目錄下尋找。現行目錄是指在『MS-DOS 模式』或『命令提示字元』最左邊的磁碟機及子目錄就是現行目錄。例如下圖的『G:\HomePage\SOURCE』就是現行目錄,當使用者輸入『addr32』時,系統就會在『G:\HomePage\SOURCE』目錄尋找『addr32.bat』執行,若沒有『addr32.bat』就依序尋找『addr32.com』、『addr32.exe』來執行,如果都找不到就會出現『Bad Command or filename』錯誤。

如果有設定 PATH 的話,系統也會到 PATH 所指定的目錄去尋找可執行檔。設定 PATH 的方法很簡單,在『MS-DOS 模式』或『命令提示字元』輸入像下面的『路徑』:

path 路徑1;路徑2……

完整的『路徑』長得像下面的樣子:

磁碟機名:\子目錄\子目錄\……

例如上圖的『G:\HomePage\SOURCE』就是一個完整的路徑名稱。PATH 可以同時設定許多路徑,中間以『;』分開,系統會由最左邊的路徑開始搜尋可執行檔,一直到最後的路徑。另外 PATH 屬於內部命令。假如您想查看現行的路徑,可以只下『PATH』,後面不接任何字直接按下『Enter』鍵:

G:\HomePage\SOURCE>path [Enter]
PATH=C:\Program Files;C:\WINDOWS\system32;C:\WINDOWS;

G:\HomePage\SOURCE>

假如您只想新加入路徑,而舊有的路徑不想刪除,那麼可以利用『%PATH%』變數,這個變數指的就是舊有的路徑。底下是新加入『G:\HomePage\MASM50』路徑,而舊的路徑不變:

G:\HomePage\SOURCE>path G:\HomePage\MASM50;%path% [Enter]

G:\HomePage\SOURCE>path [Enter]
PATH=G:\HomePage\MASM50;C:\Program Files;C:\WINDOWS\system32;C:\WINDOWS;

如果您想讓系統最後才搜尋『G:\HomePage\MASM50』子目錄堿O否有可執行檔,那麼可以用『path %path%;G:\HomePage\MASM50』。假如您想清空所有路徑,可以用『SET PATH=』。