为什么以下命令可以正常运行:
set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined APP_HOME set PATH=.;%PATH%
Run Code Online (Sandbox Code Playgroud)
但是如果我用括号使用"if"那么有错误"\ Path\With此时意外"
set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined APP_HOME (
set PATH=.;%PATH%
)
Run Code Online (Sandbox Code Playgroud)
该)
角色有时是特殊的,有时没有.
如果存在活动状态(
,则下一个未引用的,未转义的)
将关闭该块.
如果没有活动的(
,那么)
在命令参数中的未引用的,未转义的将被简单地视为文字.
您的PATH变量包含)
过早关闭IF块的PATH变量.在您的情况下,可以通过在作业周围添加引号来修复它.
set PATH=C:\Program Files (x86)\Path\With whitespaces\
if defined APP_HOME (
set "PATH=.;%PATH%"
)
Run Code Online (Sandbox Code Playgroud)
不过要小心.有时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"
)
Run Code Online (Sandbox Code Playgroud)