注释
批处理脚本的注释和文档
为脚本添加注释或文档始终是一个良好的实践。这对于维护脚本以理解脚本实际上做了什么是必需的。
例如,考虑以下没有任何注释的代码片段。
如果任何没有开发过以下脚本的普通人试图理解脚本,那么这个人要理解脚本实际上做了什么将需要很长时间。
@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
现在你可以看到,代码对于没有开发过代码的用户来说更加易于理解,因此更易于维护。
chat
详细介绍一下 bat 的注释
批处理(Batch)文件中的注释是用来解释代码或临时禁用代码行的一种方式。
注释在批处理文件执行时不会被解释或执行。以下是关于批处理文件中注释的详细介绍:
单行注释
在批处理文件中,单行注释以 ::
或 REM
开始,直到该行的末尾。
这两者在功能上是等价的,你可以选择使用任何一个。例如:
:: 这是一个单行注释
REM 这也是一个单行注释
多行注释
批处理文件不支持真正的多行注释。如果你需要对多行代码进行注释,你需要在每一行的开始都加上 ::
或 REM
。
例如:
:: 第一行注释
:: 第二行注释
:: 第三行注释
REM 第一行注释
REM 第二行注释
REM 第三行注释
禁用代码
你可以使用注释来临时禁用批处理文件中的代码行。例如:
REM echo This line will not be executed
注释变量
在批处理文件中,注释不能包含在变量的声明中。例如,以下代码将不会按预期工作:
:: set var=This is not a comment
set var::This is a comment
在上面的例子中,set var::This is a comment
实际上会将变量 var
设置为 :This is a comment
,因为 ::
是注释的开始,所以 This is a comment
部分不会被执行。
注释批处理文件的头部
通常在批处理文件的开头,会使用注释来提供关于该脚本的信息,如作者、创建日期、脚本的用途等。例如:
:: ==========================================
:: Author: Your Name
:: Created: 2023-05-06
:: Purpose: This script demonstrates the use of comments in batch files.
:: ==========================================
echo Hello, World!
结合使用 @echo off
和注释
当使用 @echo off
命令时,所有随后的 echo
命令都不会在命令行中显示其输出。
然而,echo
仍然可以用于生成注释,因为即使它们被禁用,注释仍然有效。例如:
@echo off
echo This line will not be displayed
REM This is a comment and will not be executed or displayed
注意事项
-
注释不应该用于隐藏恶意代码或意图。
-
确保注释清晰、简洁,有助于理解代码。
批处理文件中的注释是编写者用来解释代码、临时禁用代码或提供脚本信息的重要工具。正确使用注释可以提高代码的可读性和维护性。
参考资料
https://www.tutorialspoint.com/batch_script/batch_script_comments.htm