Skip to content

Instantly share code, notes, and snippets.

@vsajip
Created September 20, 2022 09:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vsajip/013e8d112023983764168bfc30874d53 to your computer and use it in GitHub Desktop.
Save vsajip/013e8d112023983764168bfc30874d53 to your computer and use it in GitHub Desktop.
Eryk Sun's activate/deactivate batch scripts
@setlocal EnableExtensions EnableDelayedExpansion
@REM Set VIRTUAL_ENV and VIRTUAL_ENV_PROMPT to the UTF-8 encoded parameters.
@REM CMD decodes line by line, so switch to UTF-8 (65001) temporarily.
@for /f "tokens=2 delims=:." %%a in ('"%SystemRoot%\System32\chcp.com"') do @(
set "_OLD_CODEPAGE=%%a"
)
@if defined _OLD_CODEPAGE (
"%SystemRoot%\System32\chcp.com" 65001 > nul
)
@set "VIRTUAL_ENV=__VENV_DIR__"
@set "VIRTUAL_ENV_PROMPT=__VENV_PROMPT__"
@if defined _OLD_CODEPAGE (
"%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul
)
@set "EXPORTS=set VIRTUAL_ENV"
@set "EXPORTS=!EXPORTS!^&set VIRTUAL_ENV_PROMPT"
@if not defined _OLD_VIRTUAL_PYTHONHOME (
if defined PYTHONHOME (
set "_OLD_VIRTUAL_PYTHONHOME=!PYTHONHOME!"
set "EXPORTS=!EXPORTS!^&set _OLD_VIRTUAL_PYTHONHOME"
)
)
@set "EXPORTS=!EXPORTS!^&echo PYTHONHOME^="
@if defined _OLD_VIRTUAL_PROMPT (
set "PROMPT=!VIRTUAL_ENV_PROMPT!!_OLD_VIRTUAL_PROMPT!"
) else if defined PROMPT (
set "_OLD_VIRTUAL_PROMPT=!PROMPT!"
set "PROMPT=!VIRTUAL_ENV_PROMPT!!PROMPT!"
set "EXPORTS=!EXPORTS!^&set _OLD_VIRTUAL_PROMPT"
) else (
set "PROMPT=!VIRTUAL_ENV_PROMPT!$P$G"
)
@set "EXPORTS=!EXPORTS!^&set PROMPT"
@if defined _OLD_VIRTUAL_PATH (
set "PATH=!VIRTUAL_ENV!\Scripts;!_OLD_VIRTUAL_PATH!"
) else if defined PATH (
set "_OLD_VIRTUAL_PATH=!PATH!"
set "PATH=!VIRTUAL_ENV!\Scripts;!PATH!"
set "EXPORTS=!EXPORTS!^&set _OLD_VIRTUAL_PATH"
) else (
set "PATH=!VIRTUAL_ENV!\Scripts;%SystemRoot%;%SystemRoot%\System32"
)
@set "EXPORTS=!EXPORTS!^&set PATH"
@REM Evaluate EXPORTS in the global environment.
@set "DO_ENDLOCAL=1"
@for /f "delims=" %%a in ('!EXPORTS!') do @(
setlocal EnableExtensions
if defined DO_ENDLOCAL (
endlocal
)
endlocal
set "%%a"
)
@setlocal EnableExtensions EnableDelayedExpansion
@set "EXPORTS=echo VIRTUAL_ENV^="
@set "EXPORTS=!EXPORTS!^&echo VIRTUAL_ENV_PROMPT^="
@if defined _OLD_VIRTUAL_PYTHONHOME (
set "PYTHONHOME=!_OLD_VIRTUAL_PYTHONHOME!"
set "EXPORTS=!EXPORTS!^&set PYTHONHOME"
set "EXPORTS=!EXPORTS!^&echo _OLD_VIRTUAL_PYTHONHOME^="
) else (
set "EXPORTS=!EXPORTS!^&echo PYTHONHOME^="
)
@if defined _OLD_VIRTUAL_PROMPT (
set "PROMPT=!_OLD_VIRTUAL_PROMPT!"
set "EXPORTS=!EXPORTS!^&set PROMPT"
set "EXPORTS=!EXPORTS!^&echo _OLD_VIRTUAL_PROMPT^="
) else (
set "EXPORTS=!EXPORTS!^&echo PROMPT^="
)
@if defined _OLD_VIRTUAL_PATH (
set "PATH=!_OLD_VIRTUAL_PATH!"
set "EXPORTS=!EXPORTS!^&set PATH"
set "EXPORTS=!EXPORTS!^&echo _OLD_VIRTUAL_PATH^="
) else (
set "EXPORTS=!EXPORTS!^&echo PATH^="
)
@REM Evaluate EXPORTS in the global environment.
@set "DO_ENDLOCAL=1"
@for /f "delims=" %%a in ('!EXPORTS!') do @(
setlocal EnableExtensions
if defined DO_ENDLOCAL (
endlocal
)
endlocal
set "%%a"
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment