[解決済み】バッチファイルではどのようなコメントスタイルを使用すればよいですか?
質問
バッチファイルを書いていて、以下のようなことに遭遇しました。
このユーザーガイド
これは非常に有益な情報です。その中で、行のコメント付けは、単に
REM
のみならず
::
. と書いてある。
バッチコード中のコメントは、ダブルコロンを使って作ることができます。これは、ラベルがリダイレクトシンボルより先に処理されるため、REMコマンドを使うより優れています。
::<remark>
は問題ありませんがrem <remark>
はエラーを発生させます。
では、なぜ私が目にするほとんどのガイドや例では、このように
REM
コマンドを使用します。それは
::
は、すべてのバージョンのWindowsで動作しますか?
解決方法は?
tl;dr:
REM
は、バッチファイルにコメントを埋め込むための文書化されサポートされている方法です。
::
は基本的に空白のラベルで、決してジャンプすることはできませんが、一方
REM
は実際のコマンドであり、何もしない。どちらの場合も(少なくともWindows 7では)、リダイレクト演算子の存在が問題になることはありません。
しかし
::
は、特定の状況下でブロック内で誤動作することが知られており、ラベルとしてではなく、ある種のドライブレターとして解析されることがあります。具体的にどこなのかはちょっと曖昧ですが、それだけでも、私は
REM
のみです。バッチファイルにコメントを埋め込む方法として、文書化されサポートされているものです。
::
は、単に特定の実装の成果物に過ぎません。
以下はその例です。
::
で問題が発生します。
FOR
のループになります。
この例では
ではない
という名前のファイルで動作します。
test.bat
をデスクトップに表示させることができます。
@echo off
for /F "delims=" %%A in ('type C:\Users\%username%\Desktop\test.bat') do (
::echo hello>C:\Users\%username%\Desktop\text.txt
)
pause
この例ではコメントとして正しく動作しますが
@echo off
for /F "delims=" %%A in ('type C:\Users\%username%\Desktop\test.bat') do (
REM echo hello>C:\Users\%username%\Desktop\text.txt
)
pause
問題は、出力をファイルにリダイレクトしようとしたときに発生するようです。私の推測では、この問題は
::
というエスケープされたラベルとして
:echo
.
関連
-
[解決済み】バッチ内のファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくない
-
[解決済み】cmdでdirを呼び出すと出力される。"Cドライブのボリュームにはラベルがありません。"
-
[解決済み] Windows PowerShellの環境変数を設定する
-
[解決済み] N日以上前のファイルを削除するバッチファイル
-
[解決済み] Vimの設定ファイルにコメントを入れる方法。".vimrc" は?
-
[解決済み】バッチ/cmdで "コメントアウト"(コメント追加)するには?
-
[解決済み】Windowsのバッチファイル:.batと.cmdの違いは?
-
[解決済み】Windowsのバッチファイルの隠し機能
-
[解決済み] バッチファイル内のアンパサンドをエスケープするには?
-
[解決済み] バッチファイルでのファイル削除時に「よろしいですかY/N」を省略する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Powershellでhead、tail、more、less、sedが行うことを行うには?[クローズド]です。
-
[解決済み] Sudoが見つかりません。npm install を試しています。
-
[解決済み] 設定ファイルを開くことができません。Windowsの/usr/local/ssl/openssl.cnf [重複] を開くことができません。
-
[解決済み] Autohotkey Controlsendコマンドを理解する
-
[解決済み] コマンドプロンプト「Net View System Error 6118」[終了しました]。
-
[解決済み] Windows (10)にPythonがインストールされているかどうかをテストし、インストールされていない場合はexeを実行してインストールするにはどうすればよいですか?
-
[解決済み] CMDでPowerShellを実行する方法
-
[解決済み] PowerShellのWrite-HostとWrite-Outputの違い?
-
[解決済み】バッチ/cmdで "コメントアウト"(コメント追加)するには?
-
[解決済み] Windowsのコマンドラインでコメントするにはどうしたらいいですか?