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

Batch file 为什么检查x86程序文件目录的IF语句会导致错误消息?,batch-file,Batch File,我有XP和Win7电脑。在批处理文件中,我必须提供可执行文件的路径。为了区分操作系统,我编写了这个批处理文件。。。但它不起作用,给了我一个错误 @echo off if EXISTS %ProgramFiles(x86)% ( set PATH="c:\Program Files (x86)\McAfee\VirusScan Enterprise\" ) else ( set PATH="c:\Program Files\McAfee\VirusScan Enterprise\" )

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

@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:\此时程序意外。

我的那批货怎么了

@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)%

周围加引号。最好使用此批处理代码:

@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%
批处理代码中有几个错误

  • 存在而不是存在。此关键字末尾没有s

  • 程序文件目录中缺少的双引号通常包含一个空格

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

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

  • 目录被添加到路径中始终不带双引号,并且始终不带尾随反斜杠

  • 也可以只检查环境变量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%
    

    我很确定您不想覆盖
    路径
    。很多重要的事情都取决于它;相反,您应该附加到它。这种语法
    设置“ENVVAR=…”
    确实令人兴奋(恶心),但它可以工作