分かる方いたら、教えてください。->解決?しました。
元々は、ipconfig /allのコマンド出力結果から、単に
set contents1=%contents1:(優先)=%
で、(優先)を取ろうとしてます。
なぜか、if文の中で文字置き換えすると、エラーになるんです。
if文の外なら、問題ないのです。
もちろん、gotoで飛ばしてif文から出せば、エラー回避は出来ますが、何が起きてるのか、不思議です。
以下のバッチはremが3つありますが、どのremをとってもエラーになります。
原因わかる方いませんか?
→@gehahaさんに、教えていただきました。if文の中に、()の文字が存在すると誤動作するそうです。
()の文字が存在する場合は、if文の外に書かないとだめらしいです。
多分、バグなんだろうけど、しょうがないですね。
test.bat
@echo off
setlocal enabledelayedexpansion
set contents1=「テスト(優先)」
set contents2=%contents1%
set contents3=%contents1%
set contents4=%contents1%
set contents1=%contents1:(優先)=%
echo contents1=%contents1%
set contents2=!contents2:(優先)=!
echo contents2=%contents2%
if 1==1 (
set contents3=%contents3:(優先)=%
echo 3
rem echo contents3='%contents3%'
)
echo contents3=%contents3%
if 1==1 (
rem set contents4=!contents4:(優先)=!
echo 4
rem echo contents4=%contents4%
)
echo contents4=%contents4%
endlocal