批处理脚本 - 注释

为创建的脚本添加注释或文档始终是一个好习惯。 这是维护脚本以了解脚本实际功能所必需的。

例如,考虑以下没有任何形式注释的代码。 如果任何没有开发过以下脚本的普通人试图理解该脚本,那么该人将需要花费大量时间才能理解该脚本的实际用途。

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'是需要添加的注释。

以下示例显示了"::"命令的用法。

示例

@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

您现在可以看到代码对于没有开发过代码的用户来说变得更容易理解,因此更易于维护。