【Windows 批处理工具】一键全局切换 phpStudy 的多个 PHP 版本
工具介绍
这是一个基于Windows批处理脚本的PHP版本全局环境变量设置工具,能够快速切换系统默认的PHP版本。工具会自动检测phpStudy安装目录下的所有PHP版本,清理旧的环境变量配置,并设置新的全局PHP路径,让开发者可以在命令行中直接使用指定版本的PHP命令。
功能特点
-
自动检测:自动扫描phpStudy安装目录下的所有PHP版本
-
权限验证:自动检查管理员权限,确保操作成功
-
环境清理:自动清理旧的PHP路径,避免环境变量冲突
-
即时生效:设置完成后立即刷新当前窗口环境变量
-
验证功能:自动验证PHP版本是否设置成功
使用说明
1. 下载工具
将以下代码保存为.bat或.cmd文件(如php_version_switcher.bat、php_version_switcher.cmd):
@echo off
chcp 65001 >nul
title PHP版本全局设置工具
color 0A
:start
cls
echo ========================================
echo PHP 版本全局设置工具
echo (管理员权限运行)
echo ========================================
echo.
:: 检查管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
echo 错误:需要管理员权限!
pause
exit /b
)
setlocal enabledelayedexpansion
set PHP_BASE=E:\phpstudy_pro\Extensions\php
set INDEX=0
echo 当前已安装的PHP版本:
echo ---------------------------
for /d %%i in ("%PHP_BASE%\php*") do (
if exist "%%i\php.exe" (
set /a INDEX+=1
for %%f in ("%%i") do (
echo [!INDEX!] %%~nxf
set "VERSION_!INDEX!=%%~nxf"
)
)
)
if !INDEX!==0 (
echo 未找到PHP版本
pause
exit /b
)
echo.
set /p CHOICE=输入要设置的版本序号(1-!INDEX!):
if "%CHOICE%"=="" goto start
if !CHOICE! LSS 1 goto start
if !CHOICE! GTR !INDEX! (
echo 错误:无效的序号
pause
goto start
)
call set SELECTED_VERSION=%%VERSION_!CHOICE!%%
cls
echo ========================================
echo 确认设置
echo ========================================
echo.
echo 将要设置为全局默认: !SELECTED_VERSION!
echo 路径: %PHP_BASE%\!SELECTED_VERSION!
echo.
set /p CONFIRM=确定要设置吗?(输入y确认,其他取消):
if /i not "!CONFIRM!"=="y" (
echo 操作已取消
pause
goto start
)
echo.
echo 正在更新系统环境变量...
:: 获取当前系统PATH
for /f "tokens=2*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path 2^>nul') do set "SYS_PATH=%%B"
if not defined SYS_PATH (
echo 错误:无法获取系统PATH
pause
exit /b
)
:: 清理所有旧的PHP路径
set "NEW_PHP_PATH=%PHP_BASE%\!SELECTED_VERSION!"
set "CLEANED_PATH="
for %%p in ("!SYS_PATH:;=";"!") do (
set "path_part=%%~p"
if "!path_part:%PHP_BASE%\php=!"=="!path_part!" (
if not defined CLEANED_PATH (
set "CLEANED_PATH=!path_part!"
) else (
set "CLEANED_PATH=!CLEANED_PATH!;!path_part!"
)
)
)
:: 构建新的PATH
if defined CLEANED_PATH (
set "FINAL_PATH=!NEW_PHP_PATH!;!CLEANED_PATH!"
) else (
set "FINAL_PATH=!NEW_PHP_PATH!"
)
:: 更新系统环境变量
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "!FINAL_PATH!" /f >nul
if errorlevel 1 (
echo 错误:更新注册表失败
pause
exit /b
)
echo 注册表更新成功!
:: 广播环境变量变更
echo 正在广播环境变量更改...
powershell -Command "[Environment]::SetEnvironmentVariable('Path', '%FINAL_PATH%', 'Machine')" >nul
if errorlevel 1 (
echo 广播失败,可能需要重启或注销后生效
) else (
echo 广播成功!
)
echo.
echo ========================================
echo PHP版本设置成功!
echo ========================================
echo.
:: 刷新当前窗口环境变量
echo 正在刷新当前窗口环境变量...
for /f "tokens=2*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set PATH=%%B
echo 已刷新!
echo.
echo 验证PHP版本:
php -v
echo.
echo 注意:其他已打开的程序需要重启才能识别新设置
echo 按任意键退出...
pause >nul
2. 修改配置(重要)
根据你的phpStudy实际安装路径,修改脚本中的PHP_BASE变量:
set PHP_BASE=E:\phpstudy_pro\Extensions\php
如果你的phpStudy安装在D盘或其他路径,请修改为对应的路径,例如:
set PHP_BASE=D:\phpstudy_pro\Extensions\php
3. 运行工具
右键点击保存的.bat文件,选择"以管理员身份运行"。
4. 选择版本
工具启动后会显示当前已安装的所有PHP版本,输入对应的序号即可完成设置。
5. 效果展示


核心代码解析
权限检查
net session >nul 2>&1
if %errorLevel% neq 0 (
echo 错误:需要管理员权限!
pause
exit /b
)
通过net session命令检测管理员权限,确保脚本能够修改系统环境变量。
版本扫描
for /d %%i in ("%PHP_BASE%\php*") do (
if exist "%%i\php.exe" (
set /a INDEX+=1
for %%f in ("%%i") do (
echo [!INDEX!] %%~nxf
set "VERSION_!INDEX!=%%~nxf"
)
)
)
遍历phpStudy安装目录下的所有PHP版本文件夹,检测是否存在php.exe文件,并记录版本信息。
环境变量清理
for %%p in ("!SYS_PATH:;=";"!") do (
set "path_part=%%~p"
if "!path_part:%PHP_BASE%\php=!"=="!path_part!" (
if not defined CLEANED_PATH (
set "CLEANED_PATH=!path_part!"
) else (
set "CLEANED_PATH=!CLEANED_PATH!;!path_part!"
)
)
)
清理系统PATH环境变量中所有旧的PHP路径,避免多个PHP版本路径冲突。
注册表更新
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "!FINAL_PATH!" /f >nul
使用reg add命令更新系统注册表中的PATH环境变量,使设置永久生效。
注意事项
-
管理员权限:必须使用管理员权限运行,否则无法修改系统环境变量
-
路径配置:根据实际phpStudy安装位置修改
PHP_BASE变量 -
生效范围:当前窗口立即生效,其他已打开的程序需要重启才能识别新设置
-
系统兼容:适用于Windows 7/8/10/11系统
更多推荐
所有评论(0)