批處理腚本 - 返回代碼

你好,未來的編程者們!今天,我們將深入Batch腚本中的一個令人興奮的主題:返回代碼。別擔心如果你是完全的新手;我會一步一步地引導你,就像我這些年來對無數學生所做的一樣。所以,來一杯咖啡(或是你喜歡的飲料),我們開始吧!

Batch Script - Return Code

理解返回代碼

在我們深入細節之前,讓我們先了解一下返回代碼是什麼。想像你正在派遣你的機器人朋友去執行任務。當它回來時,你會想知道任務是否成功,對吧?這正是編程中返回代碼的作用。它們就像是程序傳回的小消息,告訴我們它們是否成功完成了任務,或者是否出了問題。

在Batch腚本中,這些返回代碼通常被稱為“錯誤級別”。讓我們進一步探索這個概念。

錯誤級別

在Batch中,錯誤級別是一個特殊的變量,它保存了最後執行的命令或程序的返回代碼。它就像是一張記分卡,告訴我們命令執行得好壞。

檢查錯誤級別

要檢查錯誤級別,我們使用%ERRORLEVEL%變量。這裡有一個簡單的例子:

@echo off
dir C:\NonExistentFolder
echo The error level is %ERRORLEVEL%

如果你運行這個腚本,你會看到類似這樣的輸出:

File Not Found
The error level is 1

dir命令找不到這個文件夹,所以它返回了一個錯誤級別1。如果文件夹存在,錯誤級別會是0。

在決策中使用錯誤級別

錯誤級別在腚本中做決策時非常有用。這有一個例子:

@echo off
ping google.com
if %ERRORLEVEL% EQU 0 (
echo Internet connection is working!
) else (
echo Oops! No internet connection.
)

在這個腚本中,我們正在檢查是否能夠ping通Google。如果ping成功(錯誤級別0),我們知道網絡是通用的。如果不成功,我們顯示一個錯誤消息。

循環

現在我們已經理解了錯誤級別,讓我們看看如何在循環中使用它們。循環就像是你的代碼的旋轉木馬,讓你重複動作直到滿足某個條件。

基本循環結構

這裡有一個從1數到5的簡單循環:

@echo off
set counter=1
:loop
if %counter% LEQ 5 (
echo Counter is %counter%
set /a counter+=1
goto loop
)
echo Loop finished!

這個腚本會輸出:

Counter is 1
Counter is 2
Counter is 3
Counter is 4
Counter is 5
Loop finished!

在循環中使用錯誤級別

我們可以將循環與錯誤級別結合起來創建有動態性的腚本。這有一個例子:

@echo off
:retry
ping google.com
if %ERRORLEVEL% NEQ 0 (
echo Connection failed. Retrying in 5 seconds...
timeout /t 5 >nul
goto retry
)
echo Connection successful!

這個腚本會不斷嘗試ping Google直到成功。它就像一個堅持的小機器人,不達目的誓不罷休!

通過命令行參數循環

命令行參數就像是給你的腚本的特殊指示,當你運行它時。讓我們看看如何通過這些參數進行循環。

基本參數循環

這有一個腚本,會打印出你給它的所有參數:

@echo off
:loop
if "%1"=="" goto end
echo Argument: %1
shift
goto loop
:end
echo All arguments processed!

如果你用script.bat apple banana cherry運行這個腚本,它會輸出:

Argument: apple
Argument: banana
Argument: cherry
All arguments processed!

使用錯誤級別與參數

讓我們創建一個更先進的腚本,檢查作為參數傳遞的文件是否存在:

@echo off
:loop
if "%1"=="" goto end
if exist %1 (
echo %1 exists
) else (
echo %1 does not exist
set ERRORLEVEL=1
)
shift
goto loop
:end
if %ERRORLEVEL% NEQ 0 (
echo Some files were not found
) else (
echo All files exist
)

這個腚本會檢查作為參數傳遞的每個文件。如果任何文件不存在,它會將錯誤級別設置為1。在結束時,它會告訴你是否找到了所有文件,或者是否有一些文件找不到。

結論

恭喜你!你已經開始踏上了Batch腚本中返回代碼的世界。記住,就像學習任何新的語言一樣,實踐是關鍵。不要害怕嘗試並犯錯誤 - 我們都是這樣學習的!

這裡是我們所涉及方法的快速參考表:

方法 描述
%ERRORLEVEL% 變量,用於檢查最後一個命令的返回代碼
if %ERRORLEVEL% EQU 0 檢查上一個命令是否成功
goto label 跳轉到腚本中的特定標籤
set /a variable+=1 修改变量的值
shift 移動到下一個命令行參數
if exist filename 檢查文件是否存在

繼續編碼,持續學習,最重要的是,玩得開心!記住,每個專家都曾經是新手。誰知道呢?也許有一天你會寫出自己的編程教程!

Credits: Image by storyset