Batch-script-comments

提供:Dev Guides
移動先:案内検索

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

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

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

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 コマンドの簡単な使用方法を示しています。

&commat;echo off
Rem This program just displays Hello World
set message=Hello World
echo %message%

出力

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

Hello World

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

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

構文

:: Remarks

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

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

&commat;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

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