Script de lote - comentários
É sempre uma boa prática adicionar comentários ou documentação para os scripts que são criados. Isso é necessário para a manutenção dos scripts para entender o que o script realmente faz.
Por exemplo, considere o seguinte trecho de código que não tem forma de comentários. Se qualquer pessoa comum que não desenvolveu o script a seguir tentar entendê-lo, demorará muito para essa pessoa entender o que o script realmente faz.
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
Comentários usando a declaração Rem
Existem duas maneiras de criar comentários no Batch Script; um é por meio do comando Rem. Qualquer texto após a instrução Rem será tratado como comentário e não será executado. A seguir está a sintaxe geral desta instrução.
Sintaxe
Rem Remarks
onde 'Observações' são os comentários que precisam ser adicionados.
O exemplo a seguir mostra uma maneira simples de Rem comando pode ser usado.
Exemplo
@echo off
Rem This program just displays Hello World
set message=Hello World
echo %message%
Resultado
O comando acima produz a seguinte saída. Você notará que a linha com a instrução Rem não será executada.
Hello World
Comentários usando a :: Declaração
A outra maneira de criar comentários no Batch Script é por meio do comando ::. Qualquer texto que segue a instrução :: será tratado como comentário e não será executado. A seguir está a sintaxe geral desta instrução.
Sintaxe
:: Remarks
onde 'Observações' é o comentário que precisa ser adicionado.
O exemplo a seguir mostra o uso do comando "::".
Exemplo
@echo off
:: This program just displays Hello World
set message = Hello World
echo %message%
Resultado
O comando acima produz a seguinte saída. Você notará que a linha com a instrução :: não será executada.
Hello World
Note - Se você tiver muitas linhas de Rem, pode tornar o código mais lento, porque no final cada linha de código no arquivo em lote ainda precisa ser executada.
Vamos dar uma olhada no exemplo do grande script que vimos no início deste tópico e ver como fica quando a documentação é adicionada a ele.
::===============================================================
:: 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
Agora você pode ver que o código se tornou mais compreensível para os usuários que não o desenvolveram e, portanto, é mais fácil de manter.