為創(chuàng)建的腳本添加注釋或文檔總是一個(gè)好習(xí)慣。 這是一個(gè)維護(hù)腳本用來(lái)理解腳本實(shí)際所做的事情所必需的注釋。
例如,考慮下面這段沒(méi)有注釋形式的代碼。 如果一個(gè)沒(méi)有任何注釋的腳本,普通人試圖理解腳本,那么需要很多時(shí)間來(lái)理解腳本做些什么工作。
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
有兩種方法可以在批處理腳本中創(chuàng)建注釋; 一個(gè)是通過(guò)Rem
命令。 Rem
語(yǔ)句后的任何文本都將被視為注釋,不會(huì)被執(zhí)行。 以下是此聲明的一般語(yǔ)法。
語(yǔ)法
Rem Remarks
其中“Remarks”
是需要添加的注釋。
以下示例顯示了可以使用Rem
命令的簡(jiǎn)單方法。
示例
@echo off
Rem This program just displays Hello World
set message=Hello World
echo %message%
以上命令產(chǎn)生以下輸出。注意:Rem
語(yǔ)句行不會(huì)被執(zhí)行。
Hello World
在批處理腳本中創(chuàng)建注釋的另一種方法是通過(guò)::
命令。任何遵循::
語(yǔ)句的文本都將被視為注釋,不會(huì)被執(zhí)行。 以下是此聲明的一般語(yǔ)法。
語(yǔ)法
:: Remarks
其中“Remarks”
是需要添加的注釋。
以下示例顯示了可以使用Rem
命令的簡(jiǎn)單方法。
示例
@echo off
:: This program just displays Hello World
set message=Hello World
echo %message%
以上命令產(chǎn)生以下輸出。 注意,具有::
語(yǔ)句的行將不會(huì)被執(zhí)行。
Hello World
注 - 如果Rem
的行數(shù)太多,可能會(huì)使代碼變慢,因?yàn)樽詈筮€是需要執(zhí)行批處理文件中的每行代碼。
讓我們來(lái)看一下在本主題開(kāi)始時(shí)看到的大腳本的例子,看看它在添加注釋文檔時(shí)的樣子。
::===============================================================
:: 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
現(xiàn)在可以看到,對(duì)于沒(méi)有開(kāi)發(fā)代碼的用戶來(lái)說(shuō),代碼變得更加易于理解,因此更易于維護(hù)。