自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在 FreeDOS 上使用 BAT 文件自動(dòng)執(zhí)行任務(wù)

系統(tǒng) Linux
本文是 FreeDOS 下批處理文件的實(shí)用指南。FreeCOM shell 可以做的不僅僅是為你提供一個(gè)命令行提示符讓你在其中運(yùn)行命令,如果你需要在 FreeDOS 上自動(dòng)執(zhí)行任務(wù),你可以使用 批處理文件,也稱為 “BAT 文件”,因?yàn)檫@些腳本使用 .BAT 擴(kuò)展名。

[[434337]]

FreeDOS 下批處理文件的實(shí)用指南。

即使你以前沒有使用過 DOS,你也可能知道它的命令行 shell,即 COMMAND.COM。它已經(jīng)成為 DOS 的同義詞,F(xiàn)reeDOS 為此也實(shí)現(xiàn)了一個(gè)類似的 shell,稱為 “FreeCOM”,但也命名為 COMMAND.COM,就像在其他 DOS 系統(tǒng)上一樣。

但是 FreeCOM shell 可以做的不僅僅是為你提供一個(gè)命令行提示符讓你在其中運(yùn)行命令,如果你需要在 FreeDOS 上自動(dòng)執(zhí)行任務(wù),你可以使用 批處理文件,也稱為 “BAT 文件”,因?yàn)檫@些腳本使用 .BAT 擴(kuò)展名。

批處理文件可能比你在 Linux 編寫的腳本要簡單得多。因?yàn)樵诤芫靡郧?,這個(gè)功能最初被添加到 DOS 時(shí),它是為了讓 DOS 用戶“批量處理”某些命令。它的條件分支沒有太大的靈活性,也不支持更高級(jí)的功能,例如算術(shù)擴(kuò)展、標(biāo)準(zhǔn)輸出和錯(cuò)誤消息的重定向、后臺(tái)進(jìn)程、測試、循環(huán)(這項(xiàng)支持)和 Linux 腳本中常見的其他結(jié)構(gòu)。

本文是 FreeDOS 下批處理文件的實(shí)用指南。記住通過用百分號(hào)(%)包裹變量名稱來引用環(huán)境變量,例如 %PATH%。但是,請注意,由于歷史原因,FOR 循環(huán)的構(gòu)造略有不同。

打印輸出

批處理文件可能需要向用戶打印消息,讓用戶知道發(fā)生了什么。使用 ECHO 語句打印消息。例如,一個(gè)批處理文件可能使用以下語句表明它已完成了任務(wù):

  1. ECHO Done

ECHO 語句不需要引號(hào)。FreeCOM ECHO 語句不會(huì)以任何特殊方式處理引號(hào),它會(huì)像普通文本一樣打印它們。

通常,F(xiàn)reeDOS 在執(zhí)行批處理文件時(shí)會(huì)打印每一行。這在一個(gè)非常短的批處理文件中通常不是問題,它只為用戶定義了幾個(gè)環(huán)境變量。但是對于執(zhí)行更多工作的較長批處理文件而言,批處理行的這種一直顯示可能會(huì)變得很麻煩。要阻止此輸出,在 ECHO 語句中使用 OFF 關(guān)鍵字,如下所示:

  1. ECHO OFF

使用 ON 關(guān)鍵字在 FreeDOS 運(yùn)行時(shí)恢復(fù)顯示批處理行。

  1. ECHO ON

大多數(shù)批處理文件在第一行包含一個(gè) ECHO OFF 語句,以阻止消息,但是 shell 在執(zhí)行語句時(shí)仍然會(huì)在屏幕上打印 ECHO OFF。為了隱藏該語句,批處理文件通常在前面使用 @ 符號(hào)。這樣,任何以這個(gè)特殊字符開頭的行都不會(huì)打印,即使打開了 ECHO

  1. @ECHO OFF

注釋

編寫較長批處理文件時(shí),大多數(shù)程序員都喜歡使用 注釋 來提醒自己這個(gè)批處理文件的用途。在批處理文件中注釋,使用 REM(remark)關(guān)鍵字。REM 之后的任何內(nèi)容都會(huì)被 FreeCOM shell 忽略。

  1. @ECHO OFF
  2. REM This is a comment

執(zhí)行“輔助”批處理文件

通常,F(xiàn)reeCOM 一次只運(yùn)行一個(gè)批處理文件。但是,你可能需要使用另一個(gè)批處理文件來執(zhí)行其他操作,例如為多個(gè)批處理文件設(shè)置公共環(huán)境變量。

如果你從"正在運(yùn)行"的批處理文件中直接調(diào)用第二個(gè)批處理文件,F(xiàn)reeCOM 將完全切換到第二個(gè)批處理文件,并停止處理第一個(gè)。要改為在第一個(gè)批處理文件“內(nèi)部”運(yùn)行第二個(gè)批處理文件,你需要告訴 FreeDOS shell 使用 CALL 關(guān)鍵字去 調(diào)用 第二個(gè)批處理文件。

  1. @ECHO OFF
  2. CALL SETENV.BAT

條件分支

批處理文件確實(shí)支持使用 IF 語句的簡單條件分支。它有三種基本形式:

  1. 測試上一條命令的返回狀態(tài)
  2. 測試一個(gè)變量是否等于一個(gè)值
  3. 測試文件是否存在

IF 語句的一個(gè)常見用途是測試程序是否成功返回。如果它們正常運(yùn)行,大多數(shù)程序?qū)⒎祷亓阒担蛘咴诔霈F(xiàn)錯(cuò)誤時(shí)返回一些其他值。在 DOS 中,這稱為 錯(cuò)誤級(jí)別,這是 IF 測試的特例。

測試名為 MYPROG 的程序是否成功退出,實(shí)際上是檢查程序是否返回“零”。使用 ERRORLEVEL 關(guān)鍵字來測試特定值。例如:

  1. @ECHO OFF
  2. MYPROG
  3. IF ERRORLEVEL 0 ECHO Success

使用 ERRORLEVEL 測試錯(cuò)誤級(jí)別是檢查程序退出狀態(tài)的笨拙方法。檢查 DOS 程序的不同返回值,更有用的方法是使用 FreeDOS 為你定義的特殊變量,稱為 ERRORLEVEL。它存儲(chǔ)了最近執(zhí)行程序的錯(cuò)誤級(jí)別,然后你可以使用 == 測試不同的值。

你可以使用 == 和 IF 語句來測試變量是否等于某個(gè)值。就像一些編程語言,你可以使用 == 直接比較兩個(gè)值。通常,在一側(cè)引用一個(gè)環(huán)境變量,在另一側(cè)引用一個(gè)值,但你也可以比較兩個(gè)變量的值以查看它們是否相同。例如,你可以使用此批處理文件重寫上面的 ERRORLEVEL 代碼:

  1. @ECHO OFF
  2. MYPROG
  3. IF %ERRORLEVEL%==0 ECHO Success

IF 語句的另一個(gè)常見用途是測試文件是否存在,如果存在則采取操作。你可以使用 EXIST 關(guān)鍵字來測試。例如,要?jiǎng)h除名為 TEMP.DAT 的臨時(shí)文件,你可以在批處理文件中使用以下行:

  1. @ECHO OFF
  2. IF EXIST TEMP.DAT DEL TEMP.DAT

對于任何 IF 語句,你都可以使用 NOT 關(guān)鍵字來 否定 測試。在文件  存在時(shí)打印消息,你可以這樣寫:

  1. @ECHO OFF
  2. IF NOT EXIST TEMP.DAT ECHO No file

分支執(zhí)行

利用 IF 測試的一種方法是跳轉(zhuǎn)到批處理文件中完全不同的部分,這取決于 IF 測試的結(jié)果。在最簡單的情況下,如果一個(gè)關(guān)鍵命令失敗,你可能希望跳到批處理文件的末尾。或者,如果某些環(huán)境變量設(shè)置不正確,你可能想要執(zhí)行其他語句。

你可以使用 GOTO 指令跳轉(zhuǎn)到批處理文件的其他部分。它會(huì)跳轉(zhuǎn)到批處理文件中稱為 標(biāo)簽 的特定行。注意,這是一個(gè)嚴(yán)格的 “go-to” 跳轉(zhuǎn):批處理文件執(zhí)行將在新標(biāo)簽處啟動(dòng)。

假設(shè)程序需要一個(gè)現(xiàn)有的空文件來存儲(chǔ)臨時(shí)數(shù)據(jù),如果文件不存在,則需要在運(yùn)行程序之前創(chuàng)建一個(gè)文件。你可以將這些動(dòng)作添加到批處理文件中,這樣你的程序始終有一個(gè)臨時(shí)文件可供使用:

  1. @ECHO OFF
  2. IF EXIST temp.dat GOTO prog
  3. ECHO Creating temp file...
  4. TOUCH temp.dat
  5. :prog
  6. ECHO Running the program...
  7. MYPROG

當(dāng)然,這是一個(gè)非常簡單的例子。對于這種情況,你可以重寫批處理文件,將創(chuàng)建臨時(shí)文件作為 IF 語句的一部分:

  1. @ECHO OFF
  2. IF NOT EXIST temp.dat TOUCH temp.dat
  3. ECHO Running the program...
  4. MYPROG

迭代

如果你需要對一組文件執(zhí)行相同的任務(wù)怎么辦?你可以使用 FOR 循環(huán) 迭代 一組文件。這是一個(gè)單行循環(huán),每次使用不同的文件運(yùn)行單個(gè)命令。

FOR 循環(huán)對迭代變量使用一種特殊的語法,它的用法與其他 DOS 環(huán)境變量不同。要循環(huán)編輯一組文本文件,可以使用以下語句:(LCTT 譯注:原文此處寫錯(cuò)了,少寫了一個(gè) %

  1. @ECHO OFF
  2. FOR %%F IN (*.TXT) DO EDIT %%F

注意,如果在命令行中運(yùn)行此循環(huán),而不是在批處理文件中,那么迭代變量僅需要指定一個(gè)百分號(hào)(%):

  1. C:\> FOR %F IN (*.TXT) DO EDIT %F

命令行處理

在運(yùn)行批處理文件時(shí),F(xiàn)reeDOS 提供了一種簡單的方法來檢測用戶可能提供的命令行選項(xiàng)。FreeDOS 解析命令行輸入,并將前九個(gè)選項(xiàng)存儲(chǔ)在特殊變量 %1%2 ..... 等中,直到 %9。注意,無法通過這種方式直接訪問第十一個(gè)(及之后)選項(xiàng)。特殊變量 %0 存儲(chǔ)批處理文件的名稱。

如果你的批處理文件需要處理 9 個(gè)以上的選項(xiàng),你可以使用 SHIFT 語句移除第一個(gè)選項(xiàng),并將每個(gè)選項(xiàng)向下 移動(dòng) 一個(gè)值。所以第二個(gè)選項(xiàng)變成了 %1,第十個(gè)選項(xiàng)變成了 %9。

大多數(shù)批處理文件只需要移動(dòng)一個(gè)值。但是,如果你需要以其他增量進(jìn)行移位,可以將參數(shù)提供給 SHIFT 語句。例如:

  1. SHIFT 2

下面是一個(gè)簡單的批處理文件,演示了移位操作:

  1. @ECHO OFF
  2. ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
  3. ECHO Shift by one ..
  4. SHIFT 1
  5. ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9

執(zhí)行帶有十個(gè)選項(xiàng)的批處理文件顯示了 SHIFT 語句如何重新排列命令行選項(xiàng),因此批處理文件現(xiàn)在可以用 %9 訪問第十個(gè)參數(shù):

C:\SRC>args 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9
Shift by one ..
2 3 4 5 6 7 8 9 10 

C:\SRC> 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2023-04-20 17:26:40

FreeDOSC 語言

2021-12-24 11:25:37

FreeDOS批處理文件Linux

2021-07-10 11:20:44

FreeDOS歸檔文件

2021-07-04 19:48:07

LinuxFreeDOS復(fù)制文件

2018-12-26 09:00:07

VirtualBoxFreeDOSLinux

2021-11-29 14:26:53

FreeDOSLinux

2010-07-15 14:54:51

at命令crontab定時(shí)執(zhí)行任務(wù)

2020-04-10 09:56:12

at命令Linux安排任務(wù)

2020-11-10 08:41:51

CPU執(zhí)行任務(wù)內(nèi)存

2022-07-20 21:03:05

FreeDOS文本編輯器

2021-11-18 15:54:17

FreeDOSLinux

2010-08-09 10:44:33

DB2 9分布式管理

2022-08-30 19:14:31

LinuxBash

2021-11-26 15:07:53

FreeDOSLinux

2021-03-20 22:00:00

FreeDOS開源

2021-09-16 10:37:41

樹莓派開發(fā)者空間站

2022-05-17 09:33:52

FreeDOS聽音樂Linux

2019-11-14 10:00:18

Linuxcron任務(wù)自動(dòng)化任務(wù)

2021-06-16 12:57:27

FreeDOS

2025-01-24 07:26:07

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)