Hunting for Beyond Compare on your system: bc.bat
Posted by jpluimers on 2018/10/23
For my archive bc.bat
it finds Beyond Compare, then starts it with the given command line parameters. It prefers version 4 over version 3 and user settings over system settings:
:begin @echo off setlocal IF /I %PROCESSOR_ARCHITECTURE% == amd64 goto :x64 IF /I %PROCESSOR_ARCHITEW6432% == amd64 goto :x64 goto :x86 :x64 :: OS is 64bit set hkcuBaseKey=HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare set hklmBaseKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Scooter Software\Beyond Compare goto :findBC :x86 :: OS is 32bit set hkcuBaseKey=HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare set hklmBaseKey=HKEY_LOCAL_MACHINE\SOFTWARE\Scooter Software\Beyond Compare goto :findBC :findBC :: https://gist.github.com/rojepp/634908 :: http://stackoverflow.com/questions/5369528/windows-batch-reg-query-key-value-to-a-variable-but-do-not-display-error-if-key set SupportedBeyondCompareVersions=3, 4 for %%v in (%SupportedBeyondCompareVersions%) do ( for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hkcuBaseKey% %%v" /v ExePath 2^>NUL`) do ( call :do set bcExe="%%d" ) ) if not [%bcExe%]==[] goto :foundBC for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hkcuBaseKey%" /v ExePath 2^>NUL`) do ( call :do set bcExe="%%d" ) if not [%bcExe%]==[] goto :foundBC for %%v in (%SupportedBeyondCompareVersions%) do ( for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hklmBaseKey% %%v" /v ExePath 2^>NUL`) do ( call :do set bcExe="%%d" ) ) if not [%bcExe%]==[] goto :foundBC for /f "usebackq tokens=2* delims= " %%c in (`reg query "%hklmBaseKey%" /v ExePath 2^>NUL`) do ( call :do set bcExe="%%d" ) :foundBC if [%bcExe%]==[] ( echo no bc.exe found in registry) else ( echo bcExe=%bcExe% if exist %bcExe% start "Beyond Compare" %bcExe% %* if not exist %bcExe% echo not found: [%bcExe%] ) :exit endlocal :end goto :eof :do ::echo %* call %* goto :eof
–jeroen
Leave a Reply