@echo off setlocal powershell.exe -NoProfile -Command "$ErrorActionPreference='Stop'; $nodeDir=Join-Path $env:APPDATA 'fnm\aliases\default'; $npmDir=Join-Path $env:APPDATA 'npm'; if (!(Test-Path (Join-Path $nodeDir 'node.exe'))) { throw ('Node not found: '+$nodeDir) }; $original=[Environment]::GetEnvironmentVariable('Path','User'); $entries=@($original -split ';' | Where-Object { $_ }); foreach ($directory in @($nodeDir,$npmDir)) { if (!($entries | Where-Object { $_.TrimEnd('\') -ieq $directory })) { $entries += $directory } }; $updated=$entries -join ';'; if ($updated -cne $original) { [Environment]::SetEnvironmentVariable('Path',$updated,'User') }; if ([Environment]::GetEnvironmentVariable('Path','User') -cne $updated) { throw 'User PATH verification failed' }; Write-Host 'User PATH updated. Existing entries preserved.'" if errorlevel 1 goto failed set "PATH=%APPDATA%\fnm\aliases\default;%APPDATA%\npm;%PATH%" where node node --version if errorlevel 1 goto failed call npm.cmd --version if errorlevel 1 goto failed echo. echo Node and npm are ready. Close and reopen your terminal application. pause exit /b 0 :failed echo. echo Environment repair failed. See the error above. pause exit /b 1