テーブルの変更を行ういくつかのpythonスクリプトを実行するバッチファイルがあります。
バッチファイルから削除するのではなく、実行したくない1〜2個のpythonスクリプトをユーザーにコメントアウトさせたい(したがって、次のユーザーはこれらのスクリプトがオプションとして存在することを知っています!)
また、実行前にバッチファイルで更新する必要がある変数について特に注意を払うためのコメントを追加したいと思います。私はREM
を使うことができると思います。しかし、それは彼らがそれを実行した後の進行状況でユーザーを更新するためのものであるように見えます。
より適切にコメントを追加するための構文はありますか?
rem
コマンドは確かにコメント用です。スクリプトを実行した後に本質的にだれにも更新されません。ただし、デフォルトではバッチインタプリタが処理前に print out 各コマンドを実行するため、一部のスクリプト作成者はecho
の代わりにこの方法を使用することがあります。 rem
コマンドは何もしないので、副作用なしでそれらを印刷するのは安全です。コマンドを印刷しないようにするには、コマンドの前に@
を付けるか、プログラム全体にその設定を適用するには@echo off
を実行します。 (それ以上のコマンドを表示しないようにするのはecho off
です。@
はエコー設定が有効になる前に that コマンドを出力するのを避けるためです。
だから、あなたのバッチファイルでは、これを使用することがあります:
@echo off
REM To skip the following Python commands, put "REM" before them:
python foo.py
python bar.py
::
またはREM
:: commenttttttttttt
REM commenttttttttttt
&
文字を追加する必要があります。your commands here & :: commenttttttttttt
IF/ELSE
はエラーを返すので、ネストされたロジック(::
、FOR
ループなど)の内部ではREM
を使用します。::
はsetlocal ENABLEDELAYEDEXPANSION
内で失敗する可能性があります いいえ、普通のバッチファイルはコメントとしてREM
を使用します。 ECHO
は画面に何かを印刷するコマンドです。
ファイルのセクションを「コメントアウト」するには、GOTO
を使用できます。これらすべてのコマンド/手法の例
REM it starts here the section below can be safely erased once the file is customised
ECHO Hey you need to edit this file before running it! Check the instructions inside
ECHO Now press ctrl-c to interrupt execution or enter to continue
PAUSE
REM erase the section above once you have customised the file
python executed1.py
ECHO Skipping some stuff now
GOTO End
python skipped1.py
python skipped2.py
:END
python executed2.py
何と言えばいい?バッチファイルは古くなった時代の遺物で、不格好で醜いものです。
もっと読むことができます このウェブサイト上で 。
編集:見本と思われる要素を含むように例を少し修正しました。
REMの代わりに::が使われるのは、コンピュータがあまり速くなかった頃の時代に使われたものです。 ::行を無視します。これは "昔"にあなたのコードをスピードアップすることができます。 REMの後にさらにスペースが必要です。::の後には必要ありません。
そして最初のコメントで述べたように:あなたはあなたがする必要があると感じるどんな行にでも情報を追加することができます
SET DATETIME=%DTS:~0,8%-%DTS:~8,6% ::Makes YYYYMMDD-HHMMSS
部品のスキップに関してはすべての行の前にREMを置くのはかなり時間がかかります。コードの断片コードを継続させたい位置に必ず:LABELを設定してください。
SOME CODE
GOTO LABEL ::REM OUT THIS LINE TO EXECUTE THE CODE BETWEEN THIS GOTO AND :LABEL
SOME CODE TO SKIP
.
LAST LINE OF CODE TO SKIP
:LABEL
CODE TO EXECUTE
コメントアウトしたい行が多数ある場合は、すべての行をコメントアウトするのではなく、複数行のコメントを付けることができればより良いでしょう。
バッチ言語にはコメントブロックはありませんが、効果を達成する方法はあります。
GOTO EndComment1
This line is comment.
And so is this line.
And this one...
:EndComment1
ブロックコメントを作るためにGOTO
Labelと:Labelを使うことができます。
または、コメントファイルがバッチファイルの最後にある場合は、コードの最後にEXIT
を記述してから、理解しやすいようにコメントをいくつでも記述できます。
@ECHO OFF
REM Do something
•
•
REM End of code; use GOTO:EOF instead of EXIT for Windows NT and later
EXIT
Start of comment block at end of batch file
This line is comment.
And so is this line.
And this one...
& :: comment
color C & :: set red font color
echo IMPORTANT INFORMATION
color & :: reset the color to default
説明:
&
は2つのコマンドを分離します したがって、この場合はcolor C
が最初のコマンドで、:: set red font color
が2番目のコマンドです。
このコメント付きのステートメントは直感的に正しいように見えます。
goto error1 :: handling the error
しかし、それは ではありません - コメントの有効な使用法 。 goto
が最初の引数より後のすべての引数を無視するからです。証明は簡単です。このgoto
は失敗することもありません。
goto error1 handling the error
しかし同様の試み
color 17 :: grey on blue
color
コマンドには不明な4つの引数があるため、コマンドの実行に失敗しました:::
、grey
、on
、blue
。
それだけで動作します:
color 17 & :: grey on blue
アンパサンドは避けられません。
::
またはREM
を使用して何かをコメントアウトできます。
your commands here
:: commenttttttttttt
または
your commands here
REM commenttttttttttt
コマンドと同じ行で実行するには、アンパサンドを追加する必要があります。
your commands here & :: commenttttttttttt
または
your commands here & REM commenttttttttttt
::
、FOR
ループなど)でIF-ELSE
を使用するとエラーが発生します。そのような場合は、代わりにREM
を使用してください。これは古いトピックであり、この興味深いトピックの知識を広げるためにここに私の理解を加えたいと思います。
REMと::の主な違いは次のとおりです。
REMはコマンドそのものですが、::はNOTです。
CMDパーサーがthis :: tokenである行の最初の非空白スペースに出会うとすぐに::をトークンとして扱うことができ、それは単に行全体をスキップして次の行を読むでしょう。そのため、REMの後に行のコメントとして機能できるようにするには、少なくとも空白を1つ入れる必要がありますが、::の後ろに空白は必要ありません。
REMはコマンドそのものであることは、次の _ for _ 構文から最もよく理解できます。
基本的なFOR構文は次のとおりです。
FOR %v in (set) DO <Command> [command param]
ここで<Command>
は任意の有効なコマンドです。 rem
name__はコマンドであるため、次の有効なコマンドラインを記述できます。
FOR %i in (1,2,3) DO rem echo %i
ただし、::
はコマンドではないため、次の行を記述することはできません。
FOR %i in (1,2,3) DO :: echo %i