激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - 在 FreeDOS 上使用 BAT 文件自動執行任務

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

2021-11-10 22:43Linux中國Jim Hall Linux

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

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

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>

原文鏈接:https://linux.cn/article-13970-1.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本久久综合网 | 欧美精品激情在线 | 国产一区二区三区四区精 | 97超视频在线观看 | 久久精品高清 | 免费黄色一级网站 | 国产乱弄 | 爱福利视频网 | 国产99久久精品一区二区 | 最新中文字幕在线视频 | 成人在线免费视频观看 | 黄视频免费在线 | 人人舔人人射 | 免费小毛片| 日本欧美一区二区三区在线观看 | 国产羞羞视频在线观看免费应用 | 一区国产在线观看 | 性欧美日本 | 99精品国产成人一区二区 | 久草在线高清 | 水多视频在线观看 | 日韩视频一区二区三区在线观看 | 在线播放黄色网址 | xnxx 日本19 | 国产免费人做人爱午夜视频 | wwwxxx视频| 不要插了h| 亚洲一区在线视频观看 | 在线91观看 | 国产午夜精品一区二区三区四区 | 中国大陆一级毛片 | 日本黄色大片免费观看 | 国产一区二区影视 | 精品999www| 欧美精品一级 | 性生活视频软件 | 成人福利在线视频 | 久久一级| 久久久久免费精品 | 毛毛片在线看 | 欧美大片一级毛片 |