Skrypt wsadowy - komentarze
Dobrą praktyką jest zawsze dodawanie komentarzy lub dokumentacji do tworzonych skryptów. Jest to wymagane do konserwacji skryptów, aby zrozumieć, co faktycznie robi skrypt.
Weźmy na przykład pod uwagę następujący fragment kodu, który nie ma żadnej formy komentarzy. Jeśli jakakolwiek przeciętna osoba, która nie opracowała poniższego skryptu, spróbuje go zrozumieć, zrozumienie tego, co faktycznie robi skrypt, zajęłoby jej dużo czasu.
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
Komentarze przy użyciu instrukcji Rem
Istnieją dwa sposoby tworzenia komentarzy w skrypcie wsadowym; jeden jest za pomocą polecenia Rem. Jakikolwiek tekst następujący po instrukcji Rem będzie traktowany jako komentarz i nie zostanie wykonany. Poniżej znajduje się ogólna składnia tej instrukcji.
Składnia
Rem Remarks
gdzie „Uwagi” to komentarze, które należy dodać.
Poniższy przykład pokazuje prosty sposób, w jaki Rem można użyć polecenia.
Przykład
@echo off
Rem This program just displays Hello World
set message=Hello World
echo %message%
Wynik
Powyższe polecenie daje następujący wynik. Zauważysz, że wiersz z instrukcją Rem nie zostanie wykonany.
Hello World
Komentarze przy użyciu instrukcji ::
Innym sposobem tworzenia komentarzy w skrypcie wsadowym jest użycie polecenia ::. Każdy tekst następujący po instrukcji :: będzie traktowany jako komentarz i nie zostanie wykonany. Poniżej znajduje się ogólna składnia tej instrukcji.
Składnia
:: Remarks
gdzie „Uwagi” to komentarz, który należy dodać.
Poniższy przykład ilustruje użycie polecenia „::”.
Przykład
@echo off
:: This program just displays Hello World
set message = Hello World
echo %message%
Wynik
Powyższe polecenie daje następujący wynik. Zauważysz, że wiersz z instrukcją :: nie zostanie wykonany.
Hello World
Note - Jeśli masz zbyt wiele wierszy Rem, może to spowolnić kod, ponieważ na końcu każda linia kodu w pliku wsadowym nadal musi zostać wykonana.
Spójrzmy na przykład dużego skryptu, który widzieliśmy na początku tego tematu, i zobaczmy, jak wygląda po dodaniu do niego dokumentacji.
::===============================================================
:: 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
Możesz teraz zobaczyć, że kod stał się bardziej zrozumiały dla użytkowników, którzy go nie opracowali, a zatem jest łatwiejszy w utrzymaniu.