私はバッチファイルでこのコマンドを実行しています:
for %I in (*.txt *.doc) do copy %I c:\test2
...そして戻り続けます:
私はこの時に予想外でした。
このエラーの原因は何ですか?
Batch/cmdファイル内で実行している場合、double the %
マーカー:
for %%i in (*.txt *.doc) do copy %%i c:\test2
単一の%
バリアントは、コマンドラインからのみ機能します。
バッチファイルから実行する場合、変数は、%%I
のように、使用するコマンドラインからのみ、2つのパーセント記号で示す必要があります。
私は、*。cmdという名前のファイルからこのエラーを受け取っていた場合に遭遇しました。バッチコマンドの最初の引数にアクセスしようとすると、エラーが発生しました。
if %1 EQU ""
最初の引数のシンボルを引用符で囲むと、警告メッセージは消えました。
if "%1" EQU ""
質問に対する直接的な回答ではありませんが、プログラム、バッチコマンドなどでこのメッセージが表示された場合、"
文字を含むPATHに関連している可能性があります。
たとえば、Atomエディターでは、設定ビューでメッセージが表示されていました。
"\"GNU was unexpected at this time
これは、PATHに次のエントリを入れる別のプログラムが原因でした。
...;C:\"Program Files"\"GNU ARM Embedded;..."
そのため、アンチスラッシュ文字は一部のプログラムによってエスケープされたものとして読み取られますが、パス名の区切り文字ではなく単純な文字であるため問題が発生します。
私にとっての解決策は、それらの"
をPATHから削除することで、すべてがうまくいきました。
...;C:\Program Files\GNU ARM Embedded;...
PS:これがパス名のスペースをサポートしない可能性のある元のプログラム(この場合はGNU ARM Embedded)に影響するかどうかは疑問です。コメント、投稿を更新します。
お役に立てれば