@echo off REM ncp - PATH entry point on Windows. A .cmd, not a .ps1, on purpose: PowerShell's REM execution policy governs .ps1 only, so this keeps working under the default REM Restricted policy and from cmd, Win+R, Task Scheduler and .lnk targets - none REM of which load a PowerShell profile. install-windows.ps1 puts this directory on REM the machine PATH. REM REM This file must NOT be accompanied by an ncp.ps1 in the same directory: REM PowerShell resolves ExternalScript (.ps1) ahead of Application (.cmd), so a REM sibling ncp.ps1 wins in PowerShell and drags the execution policy back in - REM exactly what this file exists to avoid. REM REM ASCII only, same rule as the .ps1 files - a test in tests/test_smoke.py enforces it. setlocal REM ncp.py pins its stdout to UTF-8 (it prints check marks and em-dashes, and a REM redirected stdout would otherwise raise UnicodeEncodeError). A console still REM on codepage 437 renders those bytes as mojibake, so switch it to UTF-8 here. REM ponytail: chcp changes the calling console's codepage and does not restore REM it on exit. Harmless in practice; if that ever matters, set the console CP REM from inside ncp.py with ctypes SetConsoleOutputCP instead. chcp 65001 >nul 2>&1 set "ROOT=%~dp0.." REM System Python fallback so backup/restore work before the venv exists; those REM delegate to the stdlib-only bin/sync.py. Mirrors the same fallback in ncp.ps1. set "PY=%ROOT%\Promethean\Scripts\python.exe" if not exist "%PY%" set "PY=python" "%PY%" "%ROOT%\management\ncp.py" %* exit /b %ERRORLEVEL%