求解释
dos吧
全部回复
仅看楼主
level 1
饶程瑜 楼主
for /f "tokens=1 delims= " %%i in ('tasklist /nh ^| find /i "MySQL56"') do (set /a count+=1)
这行代码什么意思。
2015年05月25日 03点05分 1
level 11
统计包含 MySQL56 关键字的系统进程数量
2015年05月25日 04点05分 2
也就是说如果名字为mysql56的服务没有启动的话,统计的结果依然是1 是吗。 还是说启动了是1 没有启动是0
2015年05月25日 05点05分
回复
�ij���
: 启动了的话,count至少是1;没启动,count可能这个变量不存在! 你可以在前面加一句 set count=0,这样就好判断!
2015年05月25日 06点05分
@AutoRunAs 前面是有set count=0。我只是不大明白。count 这个变量的值和前面进程的判定有什么关系。
2015年05月25日 06点05分
回复
�ij���
: 这个是个简单的编程技巧!光从一两句局部代码看不出什么意思! 想学编程,自己百度点教程看吧!
2015年05月25日 06点05分
level 1
饶程瑜 楼主
cls
@echo off
color 79
title MySQL管理程序
call :checkAdmin
goto menu
:menu
cls
echo.=-=-=-=-请选择您要对MySQL的操作-=-=-=-=-
echo.1: 启动MySQL
echo.2: 关闭MySQL
echo.3: 重启MySQL
echo.=-=-=-=-请输入您要选择的项目序号↓-=-=-=-
set /p id=
if "%id%"=="1" goto startup
if "%id%"=="2" goto shutdown
if "%id%"=="3" goto reboot
if "%id%"=="4" exit
pause
:startup
echo.
call :checkMySQL
echo.启动MySQL......
net start mysql56
echo.启动MySQL成功!
pause
goto menu
:shutdown
echo.
call :checkMySQL
echo.关闭MySQL......
net stop mysql56
echo.关闭MySQL成功!
pause
goto menu
:reboot
echo.
call :checkMySQL
echo.关闭MySQL......
net stop mysql56
echo.关闭MySQL成功!
goto startup
goto menu
:goout
pause
goto menu
:checkMySQL
set /a count=0
for /f "tokens=1 delims= " %%i in ('tasklist /nh ^| find /i "mysql56"') do (set /a count+=1)
if %count% neq 0 if "%1" equ "1" (
echo 警告:MySQL已启动
goto goout
)
if %count% equ 0 if "%1" equ "2" (
echo 警告:MySQL未启动
goto goout
)
:checkAdmin
echo test am i admin? > %SystemRoot%\System32\test.sunhao
if not exist %SystemRoot%\System32\test.sunhao (
echo 警告:请以管理员身份运行!
pause
exit
)
del %SystemRoot%\System32\test.sunhao
2015年05月25日 06点05分 3
level 11
cmd 命令行运行
net start mysql56
然后打开任务管理,看看进程里有没有 mysql56;如果没有的话,你这个脚本对你没用!
有的话在命令行里测试下这个
for /f "tokens=1 delims= " %i in ('tasklist /nh ^| find /i "mysql56"') do (@echo "发现mysql56")
反正一句一句拆分测试,看问题出在哪吧!
2015年05月25日 07点05分 4
mysql56是有的。 上面的功能可以实现。只是这行命令下面的提示功能。不能实现。
2015年05月25日 07点05分
level 11
那一句改成下面的
set MyString1="mysql56"
for /F "tokens=1,2* delims=." %%i in ('tasklist /NH') do (
if "%%i" == %MyString1% set /a count+=1
)
2015年05月25日 08点05分 5
不行。是不是下面if 语句里面%1那块的错误。 %1是什么啊。不懂。
2015年05月25日 09点05分
回复
�ij���
: %1表示批处理附加参数
2015年05月25日 12点05分
level 11
我觉得他的脚本逻辑有点问题,我重新修改了,加了个命令行参数处理!你自己看吧!
还有,这个脚本的 checkAdmin(检查管理员身份) 功能;运行一次后,标志文件就不存在了,没什么意义,我删掉了!
cls
@echo off
color 79
title MySQL管理程序
if "%1" equ "" goto menu
if "%1"=="1" goto startup
if "%1"=="2" goto shutdown
if "%1"=="3" goto reboot
exit
:menu
cls
echo.注意:本脚本需要管理员身份才能运行成功!
echo.
echo.=-=-=-=-请选择您要对MySQL的操作-=-=-=-=-
echo.1: 启动MySQL
echo.2: 关闭MySQL
echo.3: 重启MySQL
echo.4: 退出操作
echo.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
echo.
set /p id="请输入您要选择的项目序号"
if "%id%"=="1" goto startup
if "%id%"=="2" goto shutdown
if "%id%"=="3" goto reboot
if "%id%"=="4" exit
goto menu
:startup
echo.
call :checkMySQL
if %count% equ 0 (
echo.启动MySQL......
net start mysql56
)
echo.MySQL已启动!
if "%1" neq "" exit
pause
goto menu
:shutdown
echo.
call :checkMySQL
if %count% neq 0 (
echo.关闭MySQL......
net stop mysql56
)
echo.关闭MySQL成功!
if "%1" neq "" exit
pause
goto menu
:reboot
echo.
call :checkMySQL
if %count% neq 0 (
echo.关闭MySQL......
net stop mysql56
)
echo.关闭MySQL成功!
echo.启动MySQL......
net start mysql56
echo MySQL已启动!
if "%1" neq "" exit
pause
goto menu
:checkMySQL
set /a count=0
set MyString1="cmd1"
for /F "tokens=1,2* delims=." %%i in ('tasklist /NH') do (
if "%%i" equ %MyString1% set /a count=1
)
2015年05月25日 14点05分 6
非常感谢,明天我一定好好看看!大神真是太好了。
2015年05月25日 14点05分
回复
�ij���
: 晕,刚才做测试,忘记改回来了![哈哈]脚本倒数第四行,你自己修改 set MyString1="mysql56"
2015年05月25日 15点05分
@AutoRunAs 还是不行。
2015年05月26日 03点05分
@AutoRunAs dos 有没有可能实现bat形式一键安装mysql 和SQl数据库。让软件里面的设置,譬如安装路径。安装功能选项 密码设置之类的全部都一个模式。实现一键安装。不用人工去选定的
2015年05月27日 06点05分
1