内ここで期待どおりに動作しません抜粋です:は「)」を使用してバッチファイルであれば/ else文
set MYMACHINENAME=BuildmasterW32
if "%MYMACHINENAME%"=="BuildmasterW32" (
set PROGRAMFILESDIR=D:\Program Files
set WISEDIR=D:\Program Files\Wise Installation Studio\WiseScript Package Editor
)
if "%MYMACHINENAME%"=="BuildmasterW64" (
set PROGRAMFILESDIR=C:\Program Files (x86)
set WISEDIR="C:\Program Files (x86)\Wise Installation Studio\WiseScript Package Editor"
)
set WISEDIR
rem we see `C:\Program Files (x86)\Wise Installation Studio\WiseScript Package Editor` at this point
pause
私が代わりにD:\Program Files...
値を見ることを期待したいです。
これは、前の行のPROGRAMFILESDIRを設定する閉じ括弧が条件文を閉じ、WISEDIRの値が上書きされるためです。
PROGRAMFILESDIRの値を二重引用符で囲んだ場合、コードは正しく機能しますが、BUT PROGRAMFILESDIRは"C:\Program Files (x86)"
(引用符は変数になります)で、C:\Program Files (x86)
ではなくなります。 PROGRAMFILESDIRは後で相対パスが追加されるプレフィックスであるため、値に引用符が含まれていない必要があります。
PROGRAMFILESDIRの割り当て行に)
の前にバックスラッシュを追加しようとしましたが、これは効果がないようです。
私が提供しているスニペットには解決策がありますか、if/elseではなくgotoを使用するように書き直す必要がありますか?
良い答えは、MC NDが投稿したものです。そうすれば、かっこをエスケープする必要はありません。 – Squashman