Q:

Open Command Window in Windows x64 mode

I have an application which is installed in x64. I want to execute this EXE in x64 command prompt. 
CASE 1:
If I open the command prompt manually as Admin (Start->Type, cmd.exe->Right click->Run as Administrator) then the EXE works fine. I get the following specifications about the Environment variables using SET command in cmd window:
CommonProgramFiles=c:\Program Files\Common Files
CommonProgramFiles(x86)=c:\Program Files (x86)\Common Files
CommonProgramW6432=c:\Program Files\Common Files
PROCESSOR_ARCHITECTURE=AMD64

CASE 2:
If I open the Command window using a script file which elevates to the Admin rights then the EXE is not found. I get the following values for the environments variables by using SET command:
CommonProgramFiles=c:\Program Files (x86)\Common Files
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=AMD64
ProgramFiles=c:\Program Files (x86)
ProgramFiles(x86)=c:\Program Files (x86)

winSysFolder=System32

Question: I have to work with Case 2. I think that the discrepancy in the paths of ProgramFiles could be the reason of my EXE not working in the second case. How can I specify in the script that it should be executed in x64 command prompt?
PS: The link to my main problem is here.
References: The script file to elevate  to Admin has been taken from Matt's answer given here.

A:

It looks like you are using a 32-bit executable to run the batch file with elevated privileges. In this case the batch file is executed with 32-bit cmd.exe in %SystemRoot%\SysWOW64, see the Microsoft articles:

File System Redirector
WOW64 Implementation Details
Registry Keys Affected by WOW64

As the batch file is already executed with elevated privileges and just needs to be processed by 64-bit cmd.exe on 64-bit Windows, here are the few lines to make sure that the batch file is executed by 64-bit Windows command processor on 64-bit Windows.
@echo off
if "%ProgramFiles(x86)%" == "" goto MainCode
if not exist %SystemRoot%\Sysnative\cmd.exe goto MainCode
%SystemRoot%\Sysnative\cmd.exe /C "%~f0" %*
goto :EOF

:MainCode
set Program
pause

Put your main batch code below the label :Maincode.
The first IF condition jumps to main batch code if the batch file is running on 32-bit Windows where the environment variable ProgramFiles(x86) does not exist at all.
The second IF condition only executed on 64-bit Windows jumps to main batch code if it cannot find the file %SystemRoot%\Sysnative\cmd.exe because the batch file is processed already by 64-bit cmd.exe.
Sysnative is not a directory. It is a special alias which exists only when 32-bit environment is active on 64-bit Windows. For that reason it is only possible to use, for example, the condition if exist %SystemRoot%\Sysnative\* to check for existence of any file, but not the condition if exist %SystemRoot%\Sysnative to check for existence of the directory because of Sysnative is not a directory.
For understanding the used commands and how they work, open a command prompt window, execute there the following commands, and read entirely all help pages displayed for each command very carefully.

cmd /?
echo /?
goto /?
if /?
pause /?
set /?

