转载 用批处理执行Mysql启动和关闭服务
语法 BAT文件语法和技巧(bat文件的编写及使用)
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
@echo off
for /f "skip=3 tokens=4" %%i in ('sc query mysql') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="RUNNING" (
echo 已经发现该服务在运行,正在已经关闭服务
net stop mysql
httpd.exe -k stop
) else (
echo 该服务现在处理停止状态,正在现在开启服务
httpd.exe -k start
net start mysql
)
exit
pause
保存的时候另存为选择编码ANSI,否则会出现中文乱码
"%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
其实就是用cacls.exe这个权限设置的命令去测试一下后面那个system文件的权限。如果权限不够就会报错,错误等级会变成1
>nul 2>&1
其中>nul是命令返回正确信息后不显示其反馈结果。
而2>&1其实是重定向,也就是调用>nul,那么就等同于2>nul,这个是用于不显示错误信息的命令
那么
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
这句其实是"%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" >nul 2>nul
批处理中>这种情况的命令,是可以写到命令前面去的。