为什么IF语句检查x86程序文件目录会导致错误消息?

时间:2014-11-17 17:26:27

标签: batch-file

我有XP和Win7 PC。在我的批处理文件中,我必须提供可执行文件的路径。为了区分操作系统,我写了这个批处理文件...但它没有用,给了我一个错误。

@echo off
if EXISTS %ProgramFiles(x86)% (
   set PATH="c:\Program Files (x86)\McAfee\VirusScan Enterprise\"
) else (
  set PATH="c:\Program Files\McAfee\VirusScan Enterprise\"
)
echo %PATH%
REM pushd %PATH%

错误是:C:\Program was unexpected at this time.

我的批次出了什么问题?

2 个答案:

答案 0 :(得分:1)

更好地使用此批处理代码:

@echo off
if exist "%ProgramFiles(x86)%" (
    set "PATH=%PATH%;%ProgramFiles(x86)%\McAfee\VirusScan Enterprise"
) else (
    set "PATH=%PATH%;%ProgramFiles%\McAfee\VirusScan Enterprise"
)
echo %PATH%
REM pushd %PATH%

批处理代码中存在多个错误。

  1. 存在而不是 EXISTS 。此关键字的末尾没有 s

  2. 缺少双引号,因为程序文件目录通常包含空格。

  3. 要添加的目录应附加到 PATH ,而不是替换环境变量路径的本地副本中的所有目录。

  4. 在Windows XP上,程序文件的目录名取决于操作系统语言。因此,在将目录附加到路径时,最好还使用环境变量。

  5. 目录被添加到 PATH ,始终没有双引号,并且始终没有反斜杠。

  6. 也可以只检查环境变量 ProgramFiles(x86),因为Windows x86上不存在此变量。

    @echo off
    if "%ProgramFiles(x86)%"=="" (
        set "PATH=%PATH%;%ProgramFiles%\McAfee\VirusScan Enterprise"
    ) else (
        set "PATH=%PATH%;%ProgramFiles(x86)%\McAfee\VirusScan Enterprise"
    )
    echo %PATH%
    

答案 1 :(得分:0)

@echo off


if EXISTS "%ProgramFiles(x86)%" (
   set PATH_="c:\Program Files (x86)\McAfee\VirusScan Enterprise\"
) else (
  set PATH_="c:\Program Files\McAfee\VirusScan Enterprise\"
)
echo %PATH_%
REM pushd %PATH_%

尝试%ProgramFiles(x86)%

周围的引号