::从注册表找到Mysql的安装路径写入文件mysql.txt reg query HKLM/SYSTEM/ControlSet001/Services/MySQL | find /I "ImagePath">C:/mysql.txt if %errorlevel% neq 0 ( echo MySQL not found pause exit )
::以”为分隔符,截取第二段内容保存到变量mysqlPath FOR /F tokens^=2^ delims^=^" %%i in (C:/mysql.txt) do set mysqlPath=%%i del C:/mysql.txt /f
::路径中/替换为/ set mysqlPath=%mysqlPath:/=/%
::删除路径最后一个字符(该字符不可见,可能是回车换行之类的) set mysqlPath=%mysqlPath:~0,-1%
:BACKTOMAIN
::取得路径最后一个字符看等不等于/ set character=%mysqlPath:~-1,1%
::如果最后一个字符不等于/,那么跳转到GETPATH删除mysqlPath的最后一个字符 if not %character% == / goto GETPATH
::进入mysql安装路径 cd /d "%mysqlPath%"
::echo %mysqlPath%
if %errorlevel% neq 0 ( echo MySQL not found pause exit )
::禁用mysql服务,跳过权限验证修改密码 taskkill /F /IM mysqld.exe net stop mysql >nul start /b mysqld --skip-grant-tables ping -n 2 127.0.0.1 >nul set /p newpwd=-^> 请输入root用户新的密码后按回车键修改: if "%newpwd%"=="" goto reset_mydpwd echo use mysql >c:/config.tmp echo update user set password=password("%newpwd%") where user="root";>>C:/config.tmp echo flush privileges; >>C:/config.tmp echo exit >>C:/config.tmp
::因为是交互式,所以从文件读取内容 mysql <C:/config.tmp taskkill /F /IM mysqld.exe net stop mysql >nul net start mysql del C:/config.tmp /F @ECHO ━━━━━━━━━━ 广州迅恒 www.xhisp.com ━━━━━━━━━━━ @ECHO root用户的密码已成功设成%newpwd% @ECHO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ pause exit
:GETPATH set mysqlPath=%mysqlPath:~0,-1% goto BACKTOMAIN