バッチスクリプト-コメント

作成されたスクリプトにコメントやドキュメントを追加することは常に良い習慣です。これは、スクリプトのメンテナンスがスクリプトの実際の動作を理解するために必要です。

たとえば、コメントの形式がない次のコードについて考えてみます。次のスクリプトを開発していない平均的な人がスクリプトを理解しようとすると、その人がスクリプトが実際に何をしているのかを理解するのに長い時間がかかります。

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ステートメントを使用したコメント

バッチスクリプトでコメントを作成する方法は2つあります。1つはRemコマンドによるものです。Remステートメントに続くテキストはコメントとして扱われ、実行されません。以下は、このステートメントの一般的な構文です。

構文

Rem Remarks

ここで、「備考」は追加する必要のあるコメントです。

次の例は、簡単な方法を示しています。 Rem コマンドを使用できます。

@echo off 
Rem This program just displays Hello World 
set message=Hello World 
echo %message%

出力

上記のコマンドは、次の出力を生成します。Remステートメントのある行は実行されないことに気付くでしょう。

Hello World

::ステートメントを使用したコメント

バッチスクリプトでコメントを作成するもう1つの方法は、::コマンドを使用することです。::ステートメントに続くテキストはコメントとして扱われ、実行されません。以下は、このステートメントの一般的な構文です。

構文

:: Remarks

ここで、「備考」は追加する必要のあるコメントです。

次の例は、「::」コマンドの使用法を示しています。

@echo off 
:: This program just displays Hello World 
set message = Hello World 
echo %message%

出力

上記のコマンドは、次の出力を生成します。::ステートメントの行は実行されないことに気付くでしょう。

Hello World

Note − 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

これで、コードを開発していないユーザーがコードを理解しやすくなり、保守しやすくなっていることがわかります。