64 ビット Windows で実行される 32 ビット アプリケーションの場合、Microsoft が MSDN の記事WOW64 実装の詳細で説明しているように、Windows によって環境変数ProgramFilesが環境変数ProgramFiles(x86)の値に設定されます。
WinRAR SFX アーカイブは、明らかに x86 SFX モジュールを使用して作成されています。SFX アーカイブは x64 SFX モジュールを使用して作成することもできますが、この SFX アーカイブは Windows x64 でのみ実行できます。
cmd.exe
x86 SFX モジュールを使用してアーカイブを作成すると、32 ビット環境でバッチ ファイルが 32 ビットで実行されます。
そのため、バッチ コードを調整し、64 ビット Windows での 32 ビット実行の検出を追加することをお勧めします。
@ECHO OFF
CD /D "%~dp0"
GOTO DisableLocal
:DisableLocal
SET "ServerPath=%ProgramFiles%\Server\"
IF EXIST "%ServerPath%" GOTO Server
REM Is batch file processed in 32-bit environment on 64-bit Windows?
REM This is not the case if there is no variable ProgramFiles(x86)
REM because variable ProgramFiles(x86) exists only on 64-bit Windows.
IF "%ProgramFiles(x86)%" == "" GOTO Config
REM On 64-bit Windows 7 and later 64-bit Windows there is the variable
REM ProgramW6432 with folder path of 64-bit program files folder.
IF NOT "%ProgramW6432%" == "" (
SET "ServerPath=%ProgramW6432%\Server\"
IF EXIST "%ProgramW6432%\Server\" GOTO Server
)
REM For Windows x64 prior Windows 7 x64 and Windows Server 2008 R2 x64
REM get 64-bit program files folder from 32-bit program files folder
REM with removing the last 6 characters from folder path, i.e. " (x86)".
SET "ServerPath=%ProgramFiles:~0,-6%\Server\"
IF EXIST "%ServerPath%" GOTO Server
:Config
ECHO Need configuration.
GOTO :EOF
:Server
ECHO Server path is: %ServerPath%