Batch Script - Functions

您好,有抱負的程式設計師們!今天,我們將要深入Batch腳本中的函數奇妙世界。作為您身邊親切的電腦老師,我非常興奮能夠引導你們進行這次旅程。所以,拿起你們最喜歡的飲料,我們開始吧!

Batch Script - Functions

什麼是函數?

在我們深入細節之前,讓我們先了解什麼是函數。可以把函數想像成腳本中的小助手。它們就像是你主程序中的迷你程序,負責執行特定的任務。就像你可能會請求朋友幫你完成特定的家務一樣,你可以調用這些函數在腳本中執行特定的任務。

函數定義

現在,讓我們學習如何創建這些有用的助手。在Batch腳本中,我們使用標籤來定義函數。這裡是基本結構:

:functionName
REM 函數代碼放在這裡
REM ...
REM ...
goto :eof

讓我們分解一下:

  1. :functionName 是標籤,標記著函數的開始。
  2. 標籤下面的行包含了你的函數實際代碼。
  3. goto :eof 告訴腳本跳轉到文件的結尾,從而結束函數。

這裡有一個簡單的例子:

:sayHello
echo Hello, World!
goto :eof

當調用這個函數時,它會簡單地在控制台打印 "Hello, World!"。

調用函數

現在,我們已經創建了一個函數,我們如何使用它呢?我們使用 call 命令。這樣做:

@echo off
call :sayHello
pause

:sayHello
echo Hello, World!
goto :eof

當你運行這個腳本時,它會輸出:

Hello, World!
請按任意鍵繼續 . . .

call 命令告訴腳本去執行我們的 sayHello 函數。

帶參數的函數

當我們能夠向函數傳遞信息時,函數會變得更加強大。這些信息片段被稱為參數。讓我們修改我們的 sayHello 函數來向特定的人問候:

@echo off
call :sayHello John
pause

:sayHello
echo Hello, %~1!
goto :eof

輸出:

Hello, John!
請按任意鍵繼續 . . .

在這個例子中,%~1 表示傳遞給函數的第一個參數。當我們調用 sayHello John 時,"John" 成為那個第一個參數。

帶多個參數的函數

我們可以向函數傳遞多個參數。讓我們創建一個函數來相加兩個數字:

@echo off
call :addNumbers 5 3
pause

:addNumbers
set /a result=%~1 + %~2
echo The sum of %~1 and %~2 is %result%
goto :eof

輸出:

The sum of 5 and 3 is 8
請按任意鍵繼續 . . .

在這裡,%~1 表示第一個參數(5),而 %~2 表示第二個參數(3)。

從函數返回值

在Batch腳本中,函數不會以傳統意義上返回值。然而,我們可以使用環境變量來模擬這種行為:

@echo off
call :multiply 6 7
echo The result is %result%
pause

:multiply
set /a result=%~1 * %~2
goto :eof

輸出:

The result is 42
請按任意鍵繼續 . . .

在這個例子中,multiply 函數設置了一個變量 result,我們可以在主腳本中使用它。

函數中的局部變量

當使用函數時,經常使用局部變量來避免與主腳本中的變量發生干擾。我們可以使用 setlocalendlocal 命令來做到這一點:

@echo off
set globalVar=I'm global
call :localVarDemo
echo After function call: %globalVar%
pause

:localVarDemo
setlocal
set globalVar=I'm local
echo Inside function: %globalVar%
endlocal
goto :eof

輸出:

Inside function: I'm local
After function call: I'm global
請按任意鍵繼續 . . .

setlocal 命令為函數創建了一個新的環境,而 endlocal 在函數結束時拋棄它,從而保存了 globalVar 的原始值。

函數庫

隨著你的腳本變得越來越複雜,你可能會發現自己在多個腳本中重複使用相同的函數。這時,你可以創建一個函數庫:

  1. 創建一個新文件,我們稱之為 myFunctions.bat
  2. 將你常用的函數放入這個文件
  3. 在你的主腳本中,使用 call 命令來運行這個文件,然後使用它的函數

myFunctions.bat:

:sayHello
echo Hello, %~1!
goto :eof

:addNumbers
set /a result=%~1 + %~2
goto :eof

mainScript.bat:

@echo off
call myFunctions.bat

call :sayHello World
call :addNumbers 10 20
echo The sum is %result%
pause

這種方法有助於保持代碼的組織性和可重用性。

常見函數方法

以下是在Batch腳本中常見的與函數相關的方法:

| 方法 | 描述 | |------|------|-------------| | call | 調用函數 | | goto :eof | 結束函數 | | %~1, %~2, 等. | 讀取函數參數 | | setlocal | 為變量創建局部環境 | | endlocal | 結束局部環境 |

記住,熟能生巧!不要害怕嘗試這些概念。創建你自己的函數,玩轉參數,看看你能夠建立什麼。在你意識到之前,你將能夠輕鬆地编写複雜的Batch腳本!

祝編程愉快,未來的程式設計師們!

Credits: Image by storyset