批次處理註釋


為建立的指令碼新增註釋或文件總是一個好習慣。 這是一個維護指令碼用來理解指令碼實際所做的事情所必需的註釋。

例如,考慮下面這段沒有注釋形式的程式碼。 如果一個沒有任何注釋的指令碼,普通人試圖理解指令碼,那麼需要很多時間來理解指令碼做些什麼工作。

ECHO OFF 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
IF NOT ERRORLEVEL 1 GOTO Syntax 
IF NOT [%2]==[] GOTO Syntax 
SETLOCAL 
SET WSS= 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND "<03>"') 
DO ECHO.%%a %%A 
ENDLOCAL 
GOTO:EOF 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part 
of the computer name^(s^) to be displayed

使用Rem語句註釋

有兩種方法可以在批次處理指令碼中建立注釋; 一個是通過Rem命令。 Rem語句後的任何文字都將被視為註釋,不會被執行。 以下是此宣告的一般語法。

語法

Rem Remarks

其中「Remarks」是需要新增的注釋。

以下範例顯示了可以使用Rem命令的簡單方法。

範例

@echo off 
Rem This program just displays Hello World 
set message=Hello World 
echo %message%

以上命令產生以下輸出。注意:Rem語句行不會被執行。

Hello World

註釋使用::宣告

在批次處理指令碼中建立註釋的另一種方法是通過::命令。任何遵循::語句的文字都將被視為註釋,不會被執行。 以下是此宣告的一般語法。

語法

:: Remarks

其中「Remarks」是需要新增的注釋。

以下範例顯示了可以使用Rem命令的簡單方法。

範例

@echo off 
:: This program just displays Hello World 
set message=Hello World 
echo %message%

以上命令產生以下輸出。 注意,具有::語句的行將不會被執行。

Hello World

- 如果Rem的行數太多,可能會使程式碼變慢,因為最後還是需要執行批次處理檔案中的每行程式碼。

讓我們來看一下在本主題開始時看到的大指令碼的例子,看看它在新增註釋文件時的樣子。

::===============================================================
:: The below example is used to find computer and logged on users
::
::===============================================================
ECHO OFF 
:: Windows version check 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
:: Command line parameter check 
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax 
:: Keep variable local 
SETLOCAL 
:: Initialize variable 
SET WSS= 
:: Parse command line parameter 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
:: Use NET VIEW and NBTSTAT to find computers and logged on users 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND 
"<03>"') DO ECHO.%%a %%A 
:: Done 
ENDLOCAL
GOTO:EOF 
:Syntax 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part of the 
computer name^(s^) to be displayed

現在可以看到,對於沒有開發程式碼的使用者來說,程式碼變得更加易於理解,因此更易於維護。