成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在 FreeDOS 上使用 BAT 文件自動執行任務

系統 Linux
本文是 FreeDOS 下批處理文件的實用指南。FreeCOM shell 可以做的不僅僅是為你提供一個命令行提示符讓你在其中運行命令,如果你需要在 FreeDOS 上自動執行任務,你可以使用 批處理文件,也稱為 “BAT 文件”,因為這些腳本使用 .BAT 擴展名。

[[434337]]

FreeDOS 下批處理文件的實用指南。

即使你以前沒有使用過 DOS,你也可能知道它的命令行 shell,即 COMMAND.COM。它已經成為 DOS 的同義詞,FreeDOS 為此也實現了一個類似的 shell,稱為 “FreeCOM”,但也命名為 COMMAND.COM,就像在其他 DOS 系統上一樣。

但是 FreeCOM shell 可以做的不僅僅是為你提供一個命令行提示符讓你在其中運行命令,如果你需要在 FreeDOS 上自動執行任務,你可以使用 批處理文件,也稱為 “BAT 文件”,因為這些腳本使用 .BAT 擴展名。

批處理文件可能比你在 Linux 編寫的腳本要簡單得多。因為在很久以前,這個功能最初被添加到 DOS 時,它是為了讓 DOS 用戶“批量處理”某些命令。它的條件分支沒有太大的靈活性,也不支持更高級的功能,例如算術擴展、標準輸出和錯誤消息的重定向、后臺進程、測試、循環(這項支持)和 Linux 腳本中常見的其他結構。

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

打印輸出

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

  1. ECHO Done

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

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

  1. ECHO OFF

使用 ON 關鍵字在 FreeDOS 運行時恢復顯示批處理行。

  1. ECHO ON

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

  1. @ECHO OFF

注釋

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

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

執行“輔助”批處理文件

通常,FreeCOM 一次只運行一個批處理文件。但是,你可能需要使用另一個批處理文件來執行其他操作,例如為多個批處理文件設置公共環境變量。

如果你從"正在運行"的批處理文件中直接調用第二個批處理文件,FreeCOM 將完全切換到第二個批處理文件,并停止處理第一個。要改為在第一個批處理文件“內部”運行第二個批處理文件,你需要告訴 FreeDOS shell 使用 CALL 關鍵字去 調用 第二個批處理文件。

  1. @ECHO OFF
  2. CALL SETENV.BAT

條件分支

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

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

IF 語句的一個常見用途是測試程序是否成功返回。如果它們正常運行,大多數程序將返回零值,或者在出現錯誤時返回一些其他值。在 DOS 中,這稱為 錯誤級別,這是 IF 測試的特例。

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

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

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

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

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

IF 語句的另一個常見用途是測試文件是否存在,如果存在則采取操作。你可以使用 EXIST 關鍵字來測試。例如,要刪除名為 TEMP.DAT 的臨時文件,你可以在批處理文件中使用以下行:

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

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

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

分支執行

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

你可以使用 GOTO 指令跳轉到批處理文件的其他部分。它會跳轉到批處理文件中稱為 標簽 的特定行。注意,這是一個嚴格的 “go-to” 跳轉:批處理文件執行將在新標簽處啟動。

假設程序需要一個現有的空文件來存儲臨時數據,如果文件不存在,則需要在運行程序之前創建一個文件。你可以將這些動作添加到批處理文件中,這樣你的程序始終有一個臨時文件可供使用:

  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

當然,這是一個非常簡單的例子。對于這種情況,你可以重寫批處理文件,將創建臨時文件作為 IF 語句的一部分:

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

迭代

如果你需要對一組文件執行相同的任務怎么辦?你可以使用 FOR 循環 迭代 一組文件。這是一個單行循環,每次使用不同的文件運行單個命令。

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

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

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

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

命令行處理

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

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

大多數批處理文件只需要移動一個值。但是,如果你需要以其他增量進行移位,可以將參數提供給 SHIFT 語句。例如:

  1. SHIFT 2

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

  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

執行帶有十個選項的批處理文件顯示了 SHIFT 語句如何重新排列命令行選項,因此批處理文件現在可以用 %9 訪問第十個參數:

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> 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-04-20 17:26:40

FreeDOSC 語言

2021-12-24 11:25:37

FreeDOS批處理文件Linux

2021-07-10 11:20:44

FreeDOS歸檔文件

2018-12-26 09:00:07

VirtualBoxFreeDOSLinux

2021-07-04 19:48:07

LinuxFreeDOS復制文件

2021-11-29 14:26:53

FreeDOSLinux

2022-07-20 21:03:05

FreeDOS文本編輯器

2010-07-15 14:54:51

at命令crontab定時執行任務

2020-04-10 09:56:12

at命令Linux安排任務

2021-11-18 15:54:17

FreeDOSLinux

2020-11-10 08:41:51

CPU執行任務內存

2010-08-09 10:44:33

DB2 9分布式管理

2021-11-26 15:07:53

FreeDOSLinux

2021-03-20 22:00:00

FreeDOS開源

2022-08-30 19:14:31

LinuxBash

2022-05-17 09:33:52

FreeDOS聽音樂Linux

2021-06-16 12:57:27

FreeDOS

2019-11-14 10:00:18

Linuxcron任務自動化任務

2021-09-16 10:37:41

樹莓派開發者空間站

2021-12-08 15:11:51

FreeDOSLinux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩中文字幕 | 久久成人免费 | av免费网址| 久久精品| 福利视频一区 | 国产国拍亚洲精品av | 久久99精品久久久久久 | 国产精品一区一区三区 | 国产精品一区二区三 | 日韩欧美中文字幕在线观看 | 天天躁日日躁狠狠躁白人 | 亚洲免费一区二区 | 综合婷婷 | 成人高潮片免费视频欧美 | 91久久精品日日躁夜夜躁欧美 | 成人欧美一区二区三区黑人孕妇 | 国内自拍真实伦在线观看 | 亚洲第一黄色网 | 久久久久久网站 | 一区欧美 | 日韩精品一区二区三区久久 | 草草视频在线观看 | 亚洲成人精品在线 | 欧美三区视频 | 精品久久久久一区二区国产 | 九色在线观看 | 日本天天操 | 欧美日韩中文在线 | 国产情侣一区 | 国产91丝袜在线播放 | 国产一区免费 | 国产成人免费观看 | 亚洲人成人一区二区在线观看 | 电影91久久久| 久久91精品国产一区二区三区 | 韩日一区| 欧美二区在线 | 久久午夜剧场 | 91麻豆精品国产91久久久久久 | 婷婷丁香综合网 | 久久综合伊人一区二区三 |