)
キャラクターは特別な場合もあれば、そうでない場合もあります。
アクティブなが存在する場合(
、次の引用符で囲まれていない、エスケープ)
されていないものがブロックを閉じます。
コマンド引数にアクティブな(
、引用符で囲まれていない、エスケープ)
されていないものがない場合は、単にリテラルとして扱われます。
PATH変数に)
は、IFブロックを途中で閉じているものが含まれています。あなたの場合、割り当ての周りに引用符を追加することで修正できます。
set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined APP_HOME (
set "PATH=.;%PATH%"
)
ただし、注意してください。PATHに、すでに引用されているパスが含まれている場合があります。PATH内にすでに引用符がある場合、割り当てを引用符で囲むと、割り当てが壊れる可能性があります。
これは、現在の定義が何であるかに関係なく、PATHに値を付加する確実な方法です。このコードは、遅延拡張が最初は無効になっていることを前提としています。
set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined temp (
setlocal enableDelayedExpansion
for /f "eol=: delims=" %%P in ("!path!") do endlocal & set "PATH=.;%%P"
)