1. ホーム
  2. batch-file

[解決済み] cmdスクリプトで感嘆符「!」をエスケープするには?

2023-08-08 21:33:41

質問

このような場合 setlocal ENABLEDELAYEDEXPANSION をコマンドのパラメータとして使用したい場合、それをエスケープする方法はありますか?

@echo off
setlocal ENABLEDELAYEDEXPANSION
echo I want to go out with a bang!
echo I still want to go out with a bang^!

どのように解決するのですか?

遅延展開が有効な状態で説明ポイントを一括で使用するには、まず説明ポイントを無効にして変数に追加する必要があります。以下の例では DISABLEDELAYEDEXPANSIONENABLEDELAYEDEXPANSION の状態になります。

@echo off
setlocal DISABLEDELAYEDEXPANSION
set DB_password=encrypt!Pws
echo %DB_password%
SETLOCAL ENABLEDELAYEDEXPANSION
echo !DB_password!