.batファイルの「rem」コメントによりエラー「25は現時点では予期されていませんでした」が発生します

Aug 20 2020

これは変じゃないですか?.bat remコマンドにはある種のエスケープコードがありますか?

file.bat:

rem https://sourceforge.net/p/jedit/bugs/4084/?limit=25

それを実行する:

C:\Users\admin>file.bat
25 was unexpected at this time.

C:\Users\admin>https://sourceforge.net/p/jedit/bugs/4084/?limit=25

エラーレベルは表示されません。

回答

4 aschipfl Aug 20 2020 at 06:10

このremコマンドは1つの引数、つまり/?、をサポートしており、それに対して貪欲です。URLにその文字列が含まれています。

=(ちょうどのような標準的なトークンのセパレータであるSPACETAB,;)など残りは別の(無効)コマンドとして解釈されるように思われます。

引用符の間に注釈テキストを入れると、が/?検出されなくなったため、ここで役立ちます。

rem "https://sourceforge.net/p/jedit/bugs/4084/?limit=25"

あなたがこれを書くとき:

rem/ https://sourceforge.net/p/jedit/bugs/4084/?limit=25

その/?部分も検出されなくなりました。しかし、などの特殊文字は&<>|(そして)その後、認識されています。


別の方法としては、使用することです::実際に無効なラベル(ラベルで始まるでスタイルのコメントを、:参照、goto /?およびcall /?):

:: https://sourceforge.net/p/jedit/bugs/4084/?limit=25

ここでは特殊文字は問題になりませんが、括弧で囲まれたコードブロック内で使用しないでください。

js2010 Aug 20 2020 at 00:26

ああ、それは変だ。Remは、/?に応答する通常のコマンドのようなものです。/?別の弦のどこかに埋もれています。住所を二重引用符で囲むと修正されると言われています。

C:\Users\admin>rem /?
Records comments (remarks) in a batch file or CONFIG.SYS.

REM [comment]

または、25を含まないこの文字列全体で、同じ結果が得られます。

rem https://sourceforge.net/p/jedit/bugs/4084/?limit=

Records comments (remarks) in a batch file or CONFIG.SYS.

REM [comment]