我看到Windows批处理脚本的某些奇怪行为。设置PATH
时
在if
块外部,保留其值,但在if
块内部设置时,该值不保留。
这是显示问题的最小的.bat文件。
@echo off
echo %*
set PATH=c:\Windows;
set "PATH=c:\Program Files\Siemens\NX 9.0\UGII;%PATH%"
PATH
set "PATH=c:\Program Files\Siemens\NX 9.0\UGII\managed;%PATH%"
PATH
set PATH=c:\Windows;
set arg=%1
if "%arg%" == "a" (
echo "------------------------------------------"
set "PATH=c:\Program Files\Siemens\NX 9.0\UGII;%PATH%"
PATH
set "PATH=c:\Program Files\Siemens\NX 9.0\UGII\managed;%PATH%"
PATH
)
以一个a
作为唯一参数调用时脚本的输出。
a
PATH=c:\Program Files\Siemens\NX 9.0\UGII;c:\Windows;
PATH=c:\Program Files\Siemens\NX 9.0\UGII\managed;c:\Program Files\Siemens\NX 9.0\UGII;c:\Windows;
"------------------------------------------"
PATH=c:\Program Files\Siemens\NX 9.0\UGII;c:\Windows;
PATH=c:\Program Files\Siemens\NX 9.0\UGII\managed;c:\Windows;
如您所见,输出的最后一行缺少目录"c:\Program Files\Siemens\NX 9.0\UGII"
。
这是预期的吗?
是否有一种方法可以进行此工作而无需在PATH
块内只设置一次if
?