編寫(xiě)你自己的簡(jiǎn)單程序來(lái)自動(dòng)執(zhí)行通常需要大量輸入的任務(wù)的批處理文件,是一種極好的方法。
在 Linux 上,創(chuàng)建 shell 腳本 來(lái)自動(dòng)執(zhí)行重復(fù)的任務(wù)是很常見(jiàn)的。類(lèi)似地,在開(kāi)源版的舊式 DOS 操作系統(tǒng) FreeDOS 上,你可以創(chuàng)建一個(gè)包含數(shù)個(gè) FreeDOS 命令的 批處理文件 。然后,你就可以運(yùn)行你的批處理文件來(lái)按順序執(zhí)行每個(gè)命令。
你可以使用一個(gè) ASCII 文本編輯器來(lái)創(chuàng)建批處理文件,諸如 FeeDOS 的 Edit 應(yīng)用程序。在你創(chuàng)建一個(gè)批處理文件后,你可以使用一個(gè)文件名稱(chēng)加上擴(kuò)展名 .bat
來(lái)保存它。文件名稱(chēng)應(yīng)該是唯一的。如果你使用 FreeDOS 的一個(gè)命令的名稱(chēng)作為你自己的文件名稱(chēng),那么可能將會(huì)執(zhí)行 FreeDOS 的命令,而不會(huì)是你的批處理文件。
實(shí)際上,所有的內(nèi)部的和外部的 FreeDOS 命令都可以在一個(gè)批處理文件中使用。在你創(chuàng)建一個(gè)批處理文件時(shí),你其實(shí)就是在編寫(xiě)一個(gè)程序。FreeDOS 批處理文件可能沒(méi)有結(jié)構(gòu)化編程語(yǔ)言的功能,但是對(duì)于耗時(shí)短暫卻重復(fù)乏味的任務(wù)來(lái)說(shuō),它是非常方便的。
注釋你的代碼
對(duì)于任何程序員來(lái)說(shuō),學(xué)習(xí)的第一個(gè)好習(xí)慣都應(yīng)該是:在一個(gè)程序中放置注釋來(lái)解釋該代碼正在做什么。這是一件非常容易完成的事情,但是你需要仔細(xì),不要傻傻地讓操作系統(tǒng)來(lái)執(zhí)行你的注釋。避免出現(xiàn)這種情況的方法是在一個(gè)注釋行的開(kāi)頭處放置 REM
(“remark” 的縮寫(xiě)) 。
FreeDOS 忽略以 REM
開(kāi)頭的代碼行。但是任何查看源文件代碼(即你在你的批處理文件中所編寫(xiě)的文本)的人都可以讀取你的注釋并理解它在做什么。這也是一種臨時(shí)性禁用一個(gè)命令而不需要?jiǎng)h除它的一種方法。只需要打開(kāi)你的批處理文件來(lái)進(jìn)行編輯,在你想要禁用行的開(kāi)頭處放置 REM
,并保存它。在你想要重新啟用這個(gè)命令時(shí),只需要打開(kāi)文件來(lái)進(jìn)行編輯和移除 REM
。這種技巧有時(shí)被稱(chēng)為 “注釋掉” 一個(gè)命令。
開(kāi)始設(shè)置
在你開(kāi)始編寫(xiě)你自己的批處理文件前,我建議在 FreeDOS 中創(chuàng)建一個(gè)臨時(shí)目錄。這將會(huì)為你提供一個(gè)處理批處理文件的安全空間,不會(huì)意外地刪除、移動(dòng),或重命名重要的系統(tǒng)文件或目錄。在 FreeDOS 上,你可以使用 MD
命令來(lái) 創(chuàng)建一個(gè)目錄 :
-
C:\>MD TEMP
-
C:\>CD TEMP
-
C:\TEMP>
FreeDOS 的 ECHO
命令會(huì)控制當(dāng)你運(yùn)行一個(gè)批處理文件時(shí)在屏幕上顯示的東西。例如,這里是一個(gè)簡(jiǎn)單是單行批處理文件:
-
ECHO Hello world
如果你創(chuàng)建這個(gè)文件并運(yùn)行它,你將看到在屏幕上顯示的句子。從命令行中完成這項(xiàng)操作的最快的方法是:使用 COPY
命令來(lái)從你的鍵盤(pán)中(CON
)獲取輸入,并將其放置到文件 TEST1.BAT
之中。接下來(lái),按下組合鍵 Ctrl+Z
來(lái)停止復(fù)制過(guò)程,按下你鍵盤(pán)上的 Return
或 Enter
按鍵來(lái)返回一個(gè)提示。
在你的臨時(shí)目錄中嘗試創(chuàng)建這個(gè)文件為 TEST1.BAT
,接下來(lái)運(yùn)行它:
-
C:\TEMP>COPY CON TEST1.BAT
-
CON => TEST1.BAT
-
ECHO Hello world
-
^Z
-
C:\TEMP>TEST1
-
Hello world
當(dāng)你想要顯示一段文本時(shí),這可能很有用。例如,在一個(gè)程序完成它的任務(wù)時(shí),你可能會(huì)在你的屏幕上看到一條告訴你需要等待的消息,或者在一個(gè)網(wǎng)絡(luò)環(huán)境中時(shí),你可能會(huì)看到一條登錄消息。
如果你想要顯示一個(gè)空行怎么辦?你可能會(huì)認(rèn)為 ECHO
命令本身就可以達(dá)到目的,但是單獨(dú)一個(gè) ECHO
命令只會(huì)詢(xún)問(wèn) FreeDOS 來(lái)響應(yīng) ECHO
是打開(kāi)還是關(guān)閉:
-
C:\TEMP>ECHO
-
ECHO is on
獲取一個(gè)空白行的方法是在 ECHO
后緊接著使用一個(gè) +
符號(hào):
-
C:\TEMP>ECHO+
-
C:\TEMP>
批處理文件變量
變量是一個(gè)存儲(chǔ)你需要你的批處理文件臨時(shí)記住的信息的位置。這是編程的一個(gè)重要的功能,因?yàn)槟悴荒芸偸侵滥愕呐幚砦募枰褂檬裁礃拥臄?shù)據(jù)。這里有一個(gè)用于演示的簡(jiǎn)單示例。
創(chuàng)建 TEST3.BAT
:
-
@MD BACKUPS
-
COPY %1 BACKUPS\%1
變量是使用百分比符號(hào)和隨后的數(shù)字表示的,因此,這個(gè)批處理文件將在你的當(dāng)前目錄中創(chuàng)建一個(gè) BACKUPS
子目錄,然后將復(fù)制變量 %1
到 BACKUPS
文件夾之中。這個(gè)變量是什么?當(dāng)你運(yùn)行批處理文件時(shí),變量由你決定:
-
C:\TEMP>TEST3 TEMP1.BAT
-
TEST1.BAT => BACKUPS\TEST1.BAT
你的批處理文件已經(jīng)復(fù)制 TEST1.BAT
到一個(gè)名稱(chēng)為 BACKUPS
的子目錄,因?yàn)樵谀氵\(yùn)行批處理文件時(shí),你標(biāo)識(shí)這個(gè)文件為一個(gè)參數(shù)。你的批處理文件將把 %1
替換為 TEST1.BAT
。
變量是按位置的。變量 %1
是你提供給命令的第一個(gè)參數(shù),變量 %2
是第二個(gè)參數(shù),以此類(lèi)推。假設(shè)你創(chuàng)建一個(gè)批處理文件來(lái)列出一個(gè)目錄的內(nèi)容:
-
DIR %1
嘗試運(yùn)行它:
-
C:\TEMP>TEST4.BAT C:\HOME
-
ARTICLES
-
BIN
-
CHEATSHEETS
-
GAMES
-
DND
這像預(yù)期一樣的工作。但是下面這個(gè)卻失敗了:
-
C:\TEMP>TEST4.BAT C:\HOME C:\DOCS
-
ARTICLES
-
BIN
-
CHEATSHEETS
-
GAMES
-
DND
如果你嘗試它,你將得到第一個(gè)參數(shù)(C:\HOME
)的列表,而得不到第二個(gè)參數(shù)(C:\DOCS
)的列表。這是因?yàn)槟愕呐幚砦募H查找一個(gè)變量(%1
),此外,DIR
命令也僅能獲取一個(gè)目錄。
此外,當(dāng)你運(yùn)行一個(gè)批處理文件時(shí),你也不需要為其具體指定擴(kuò)展名 —— 除非你運(yùn)氣相當(dāng)不好地為批處理文件選取了一個(gè)與 FreeDOS 外部命令或類(lèi)似命令相同的名稱(chēng)。當(dāng) FreeDOS 執(zhí)行命令時(shí),它按下面的順序執(zhí)行:
- 內(nèi)部命令
- 帶有 *.COM 擴(kuò)展名的外部命令
- 帶有 *.EXE 擴(kuò)展名的外部命令
- 批處理文件
多個(gè)參數(shù)
好的,選擇重新編寫(xiě) TEST4.BAT
文件來(lái)使一個(gè)命令可以獲取兩個(gè)參數(shù),以便你可以看到這是如何工作的。首先,使用 EDIT
應(yīng)用程序來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的名稱(chēng)為 FILE1.TXT
的文本文件。在其中放置一段某種類(lèi)型(例如,“Hello world”)的語(yǔ)句,并在你的 TEMP
工作目錄中保存文件。
接下來(lái),使用 EDIT
來(lái)更改你的 TEST4.BAT
文件:
-
COPY %1 %2
-
DIR
保存它,然后執(zhí)行命令:
-
C:\TEMP\>TEST4 FILE1.TXT FILE2.TXT
在運(yùn)行你的批處理文件時(shí),你會(huì)看一個(gè)你的 TEMP
目錄的目錄列表。在列出的文件之中,你有 FILE1.TXT
和 FILE2.TXT
,它們是由你的批處理文件所創(chuàng)建的。
嵌套批處理文件
批處理文件的另一個(gè)功能是能夠 “嵌套” ,這意味著一個(gè)批處理文件可以在另外一個(gè)批處理文件中被調(diào)用和運(yùn)行。為查看這是如何工作的,從一對(duì)簡(jiǎn)單的批處理文件開(kāi)始:
第一個(gè)文件被稱(chēng)為 NBATCH1.BAT
:
-
@ECHO OFF
-
ECHO Hello
-
CALL NBATCH2.BAT
-
ECHO world
第一行 (@ECHO OFF
) 輕輕地告訴批處理文件在你運(yùn)行它時(shí)僅顯示命令 (而不是命令本身) 的輸出。你可能會(huì)在前面的示例中注意到這里有很多關(guān)于批處理文件正在做什么的反饋;在這種情況下,你正在允許你的批處理文件僅顯示結(jié)果。
第二個(gè)批處理被稱(chēng)為 NBATCH2.BAT :
-
echo from FreeDOS
使用 EDIT
來(lái)創(chuàng)建這兩個(gè)文件,并在你的 TEMP 子目錄中保存它們。運(yùn)行 NBATCH1.BAT
來(lái)查看會(huì)發(fā)生什么:
-
C:\TEMP\>NBATCH1.BAT
-
Hello
-
from FreeDOS
-
world
你的第二個(gè)批處理文件將在第一個(gè)批處理文件之中通過(guò) CALL
命令來(lái)執(zhí)行,它將提供在你 “Hello world” 信息中間的字符串 “from FreeDOS” 。
FreeDOS 腳本
編寫(xiě)你自己的簡(jiǎn)單程序來(lái)自動(dòng)執(zhí)行通常需要大量輸入的任務(wù)的批處理文件,是一種極好的方法。你使用的 FreeDOS 越多, 你將越熟悉它的命令,在你熟知命令后,在一個(gè)批處理文件中列出它們僅是一件使你的 FreeDOS 系統(tǒng)讓你生活輕松的事情。嘗試一下!
原文鏈接:https://linux.cn/article-14111-1.html