このコミュニティのおかげで、感嘆符をエスケープしてバッチのdelayedExpansionブロックですぐに使用する方法をようやく学びました。(1つだけでなく2つのエスケープキャレットを使用してください、すばらしい)
しかし、エクスクラメーションマークを含む変数の内容をパラメータとしてバッチサブルーチンに渡す方法を見つけたり、理解したりできないようです。
例:
@echo off
setLocal EnableDelayedExpansion
set variable=Hello^^!
echo "!variable!"
call :subroutine "!variable:^^!=^^!!"
pause
exit
:subroutine
echo "%~1"
exit/b
出力:
"Hello!"
"Hello"
Press any key to continue . . .
2 番目の「Hello」に感嘆符を含めたい。5行目で部分文字列置換のさまざまな順列を試しましたが、役に立ちませんでした。
ヘルプ