Here's a version that persits the current user's PATH (i.e., not system-wide): rem SOF @echo off set "OWNPATH=%~dp0" set "PLATFORM=mswin" if defined ProgramFiles(x86) set "PLATFORM=win64" if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set "PLATFORM=win64" if exist "%OWNPATH%tex\texmf-mswin\bin\context.exe" set "PLATFORM=mswin" if exist "%OWNPATH%tex\texmf-win64\bin\context.exe" set "PLATFORM=win64" set "TeXPath=%OWNPATH%tex\texmf-%PLATFORM%\bin" echo %PATH% | findstr "texmf-%PLATFORM%" > nul rem Only update the PATH if not previously updated if ERRORLEVEL 1 ( setlocal enabledelayedexpansion set "Exists=false" set "Key=HKCU\Environment" for /F "USEBACKQ tokens=2*" %%A in (`reg query %%Key%% /v PATH 2^>nul`) do ( if not "%%~B" == "" ( set "Exists=true" rem Preserve the existing PATH echo %%B > currpath.txt rem Change the PATH environment variable setx PATH "%%B;%TeXPath%" ) ) rem The user-defined PATH does not exist, create it if "!Exists!" == "false" ( rem Change the user PATH environment variable setx PATH "%TeXPath%" ) endlocal rem Update the current session set "PATH=%PATH%;%TeXPath%" ) rem EOF