標準/推奨Windowsバッチファイルコーディングスタイルはありますか?
バッチファイルを読みやすく/管理しやすくしたい場合は、これに注意する必要があると思いますが、見つかったWebを検索する 非常に小さい それについてレビューしませんでした。 (コメントすらありません) this コードレビューの質問なので、これは私があまり気にする必要がないものかどうか疑問に思います...
これらは、どんな種類のコードであっても、コードを実際に保守可能にするものです。現在、バッチは非常に短いコードであり、ファイルはそれほど多くないはずです。そのため、コーディング標準などについてそれほど多くはないのでしょう。
本当に多くのバッチがある場合、おそらくそれらがどのように連携するかを示す外部のドキュメントが必要になるでしょう。
正直に言うと、バッチ処理に慣れていないので、コードレビューの投稿で使用する構文についてすべてを理解しているわけではありません。しかし、あなたの作品は私にはかなりいいように見えます。おそらく、「ここでは何も問題はありません」と人々がコメントしなかっただけかもしれません。
私がバッチファイルを書いているとき、それらは通常次のテンプレートに依存しています:
@title Optional Title
@echo off
setlocal EnableExtensions DisableDelayedExpansion
::Comment that describes purpose and usage of the script; this should also
::contain (original) script name, version, date and author, if applicable.
rem Define global constants (read-only variables) here (names begin with `_`).
rem Initialise global variables (those accessed also by sub-routines) here,
rem if any (names begin with `$`).
rem Parse command line arguments and/or user input data here;
rem regard cases when too few or too many arguments are provided;
rem regard cases when user input is empty.
rem Place code for processing here:
rem In general, avoid non-ASCII characters within functional code;
rem use lower-case (for commands, sub-commands, verbs and keywords);
rem use upper-case only for switches, variable names and `for` references;
rem place single space between commands, switches and arguments;
rem place single spaces around redirection operators too;
rem avoid excessive line concatenation (by `&`);
rem insert explanatory comments using the `rem` command.
(
rem Indent parenthesised blocks.
)
rem Return resulting output here.
endlocal
exit /B
:SUB rtn_return ref_variable val_value
setlocal DisableDelayedExpansion
::Comment that describes purpose and usage of the sub-routine;
::include the meanings of the aforementioned arguments (like:
::`rtn_*` denote return values, so they hold variable names;
::`ref_*` denote references, so they hold variable names too;
::`val_*` denote values, so they hold immediate values).
rem Define local constants here (names begin with `_`).
rem Parse arguments here; check whether too few/many arguments are given;
rem Place code for processing here.
rem Return resulting output here; regard the `endlocal` barrier
rem (for `rtn_*` arguments, whose values need to survive it).
endlocal
exit /B
ヘルプシステム(/?
スイッチのサポート)を実装しようとしている場合、通常は次のテンプレートを使用します。
@title Optional Title
@echo off
setlocal EnableExtensions DisableDelayedExpansion
::Comment that describes purpose and usage of the script; this should also
::contain (original) script name, version, date and author, if applicable.
::::
::::"%~nx0" [version 0.0]
::::
::::Help message text that describes the purpose of the script in detail;
::::some parts of that text may be placed elsewhere in the script.
::::The continued text could describe the exact usage of the script,
::::illustrating the syntax and listing all the accepted parameters.
::::
rem Define global constants (read-only variables) here (names begin with `_`).
rem Initialise global variables (those accessed also by sub-routines) here,
rem if any (names begin with `$`).
rem Parse command line arguments and/or user input data here;
rem regard cases when too few or too many arguments are provided;
rem regard cases when user input is empty.
if "%~1"=="/?" call :HLP & exit /B
rem Place code for processing here:
rem In general, avoid non-ASCII characters within functional code;
rem use lower-case (for commands, sub-commands, verbs and keywords);
rem use upper-case only for switches, variable names and `for` references;
rem place single space between commands, switches and arguments;
rem place single spaces around redirection operators too;
rem avoid excessive line concatenation (by `&`);
rem insert explanatory comments using the `rem` command.
(
rem Indent parenthesised blocks.
)
rem Return resulting output here.
endlocal
exit /B
:SUB rtn_return ref_variable val_value
setlocal DisableDelayedExpansion
::Comment that describes purpose and usage of the sub-routine;
::include the meanings of the aforementioned arguments (like:
::`rtn_*` denote return values, so they hold variable names;
::`ref_*` denote references, so they hold variable names too;
::`val_*` denote values, so they hold immediate values).
rem Define local constants here (names begin with `_`).
rem Parse arguments here; check whether too few/many arguments are given;
rem Place code for processing here.
rem Return resulting output here; regard the `endlocal` barrier
rem (for `rtn_*` arguments, whose values need to survive it).
endlocal
exit /B
:HLP
setlocal DisableDelayedExpansion
for /F "delims=" %%H in ('findstr /B /L "::::" "%~f0"') do (
call set "LINE=%%H"
setlocal EnableDelayedExpansion
echo(!LINE:*::::=!
endlocal
)
endlocal
exit /B
::::
:::: USAGE:
::::
:::: %~nx0 [/optional] [/switch] {/alternative | /switches} parameter
::::
:::: /optional optional switch
:::: /switch optional switch
:::: /alternative alternative switch
:::: /switches alternative switch
:::: parameter required parameter
::::
最も重要なコーディングスタイルの推奨事項を含むすべてのコメントを確認してください。