如何为Windows XP和更高版本重新编码Windows XP %PROGRAMFILES%



我应该如何重新编码一个Windows XP cmd批处理文件包含下面的命令也在以后的Windows,其中两个。exes 可能程序文件(x86)?

start "GW" /WAIT "%PROGRAMFILES%GoldWaveGoldWave.exe" [...arguments...]
start "BC" /WAIT "%PROGRAMFILES%Beyond Compare 3BCompare.exe" [...arguments...]

这失败:

PATH=%PATH%;%PROGRAMFILES%;%PROGRAMFILES(X86)%
...
start "GW" /WAIT "GoldWaveGoldWave.exe" [...arguments...]
start "BC" /WAIT "Beyond Compare 3BCompare.exe" [...arguments...]

这个操作成功了,但是很笨拙:

PATH=%PATH%;%PROGRAMFILES%Goldwave;%PROGRAMFILES(X86)%Goldwave;%PROGRAMFILES%Beyond Compare 3;%PROGRAMFILES(X86)%Beyond Compare 3%
...
start "GW" /WAIT "GoldWave.exe" [...arguments...]
start "BC" /WAIT "BCompare.exe" [...arguments...]

您可以先检查%ProgramFiles(x86)%是否有值。如果是,您要查找的程序应该在该目录中找到:

SETLOCAL
SET PROGRAMFILESINUSE=%ProgramFiles%
IF NOT "%ProgramFiles(x86)%"=="" SET PROGRAMFILESINUSE=%ProgramFiles(x86)%
START "GW" /WAIT "%PROGRAMFILESINUSE%GoldWaveGoldWave.exe"

或者,你可以让它更复杂一些,让它检查你要查找的文件在哪里:

SETLOCAL
SET PROGRAMDIRECTORY=
SET RELATIVEFILEPATH=GoldWaveGoldwave.exe
CALL :CHECKFORPROGRAM "%RELATIVEFILEPATH%" "%ProgramFiles(x86)%"
CALL :CHECKFORPROGRAM "%RELATIVEFILEPATH%" "%ProgramFiles%"
IF "%PROGRAMDIRECTORY%"=="" GOTO :NOTFOUND
ECHO Found at %PROGRAMDIRECTORY%%RELATIVEFILEPATH%
GOTO :EOF
:CHECKFORPROGRAM
IF NOT "%PROGRAMDIRECTORY%"=="" GOTO :EOF
IF EXIST "%~2%~1" SET PROGRAMDIRECTORY=%~2
GOTO :EOF
:NOTFOUND
ECHO %RELATIVEFILEPATH% not found
GOTO :EOF