anchor.diff:  if .%1.==.-?. goto help
   if .%1.==./?. goto help
   if .%1.==.-h. goto help
  -if .%1.==.-v. set "ECHO.V=call :echo" & set "ECHO.VARS=call :echo.vars" & set "ECHO.MSVCVARS=call :echo.msvcvars" & goto next_arg
  +if .%1.==.-v. set "ECHO.V=call :echo" & set "ECHOVARS.V=call :echo.vars" & set "ECHO.MSVCVARS=call :echo.msvcvars" & goto next_arg
   if .%1.==.-V. echo %VERSION% & exit /b 0
   if .%1.==.-x. shift & goto exec_cmd
   if .%1.==.-X. set "NOEXEC=1" & goto next_arg
  
positive.code: :# %* = Command line arguments
  
  :main
  set "ECHO.V=rem"
  set "ECHO.VARS=rem"
  set "ECHO.MSVCVARS=rem"
  set "ARCHI="
  set "NOEXEC=0"
  
negative.code: call :findvc32
  
  %ECHO.V% :# Predefined context variables
  %ECHOVARS.V% PROCESSOR_ARCHITECTURE
  %ECHO.V%
  
  %ECHO.V% :# Environment variables used or set by this script
  %ECHOVARS.V% VSTUDIOS VSTUDIO VC VCVARSDIR
  %ECHO.V%
  
  :# Find and execute the corresponding vcvars.bat script
  :# vcvarsall.bat $1=%PROCESSOR_ARCHITECTURE%, optional, default=x86
  if not exist "%VCVARSDIR%\vcvarsall.bat" (
    >&2 echo Error: Could not find a vcvarsall.bat script
    exit /b 1
  )
  
  :# Visual Studio 2017 and later require the ARCHI parameter
  if not "%VCVARSDIR%"=="%VC%" if "%ARCHI%"=="" set "ARCHI=x86"
  
  :# Generate the final command
  set CMD=call "%VCVARSDIR%\vcvarsall.bat" %ARCHI%
  if "%NOEXEC%"=="1" (
    echo %CMD%
    exit /b 0
  ) else (
    %ECHO.V% %CMD%
  )
  endlocal & %CMD% & %ECHO.MSVCVARS%
  