Windows – Batch File Check Directory exists in x64 and/or x86

batchbatch filecommand linewindowswindows 7

I need to be able to run this batch fine on both x86 and x64 machines to check if a program has been installed correctly .

We have an app that installs in x86 in the standard program files directory, and when installed in x64 it installs in the x86 program files directory.

Currently it reports false, displays the echo that the app is installed and the echo that the app is not installed when run on x86 and x64.

if /i "%processor_architecture%"=="x86" GOTO X86DC
if /i "%processor_architecture%"=="X64" GOTO X64DC

:X86DC
if exist "C:\Program Files\installeddir\app.exe" ( echo ***App is Installed Successfully*** )
if not exist "C:\Program Files\installeddir\app.exe" ( echo ***App is not installed *** )

:X64DC
if exist "C:\Program Files(x86)\installeddir\app.exe" ( echo ***App is Installed Successfully*** )    
if not exist "C:\Program Files(x86)\installeddir\app.exe" ( echo ***App is not installed*** )

Best Answer

Wouldn't something like this be clearer? Also eliminates the issue of making assumptions about the processor_architecture variable pointed out by @MBu above.

if defined ProgramFiles(x86) (
    set appDir=%ProgramFiles(x86)%\installeddir
) else (
    set appDir=%ProgramFiles%\installeddir
)

if exist %appDir%\app.exe (
    echo We're installed in %appDir%. Woo hoo!
) else (
    echo Nope. Not installed.
)

Another alternative that just now occurs to me would be for your installation program or batch file to write a key to the registry with the installation location (can be done with reg.exe, a standard Windows utility). I'd be happy to flesh that solution out a bit more if you're interested.

Related Question