为什么PATH的值未保留在if块中

时间:2018-09-13 19:03:14

标签: batch-file cmd

我看到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

0 个答案:

没有答案