首页 > 解决方案 > 为什么 PATH 的值没有保留在 if 块中

问题描述

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

标签: batch-filecmd

解决方案


推荐阅读