Board logo

标题: [系统相关] 批处理if语句的套用:如何根据用于输入结束指定进程 [打印本页]

作者: wei120195534    时间: 2009-4-26 14:35     标题: 批处理if语句的套用:如何根据用于输入结束指定进程

我自己写了一个批处理的工具,想完善下工具,就使用到IF语句的嵌套代码如下:
:begin
@echo                            请选择你想要的操作
@echo -------------------1.输入数字1并按下回车,查看系统进程-------------------
@echo -------------------2.输入数字2并按下回车,查看系统用户-------------------
@echo -------------------3.输入数字3并按下回车,查看系统开放端口---------------
@echo -------------------4.输入数字4并按下回车,查看系统开放共享---------------
@echo -------------------5.输入其他字符并按下回车,终止本程序------------------
@echo.
@echo.
set /p num=
if "%num%"=="1" (
cls
@echo #########################################################################
@echo.
@echo                             DAVID多功能工具  
@echo.   
@echo #########################################################################
cls
tasklist
pause
goto begin
)
我想在tasklist 之后再加上一个判断“是否结束进程(Y/N)”的语句进行进一步处理
tasklist
set /p a=要结束进程吗?(Y/N)
if "%a%"=="y" goto kill
if "%a%"=="n" goto end
:kill
@echo.
@echo.
set /p pid=请输入要结束进程的PID值:
taskkill /pid "%pid%"
goto begin
:end
exit
问题是加了这句之后就出现不管按“Y”或者“N”都会询问“请输入要结束进程的PID值:

为什么会这样呢?是不是我没有释放变量??
作者: batman    时间: 2009-4-26 15:05

改成:
if /i "%a%"=="y" goto kill
if /i "%a%"=="n" goto end
作者: wei120195534    时间: 2009-4-26 18:33     标题: 回复 2楼 的帖子

还是不行,感觉怪怪的,要不我把全部代码都拿出来,拷贝回去看看
@echo off
:begin
cls
@echo #########################################################################
@echo.
@echo                             DAVID多功能工具  
@echo.   
@echo #########################################################################
@echo.
@echo.
@echo                            请选择你想要的操作
@echo -------------------1.输入数字1并按下回车,查看系统进程-------------------
@echo -------------------2.输入数字2并按下回车,查看系统用户-------------------
@echo -------------------3.输入数字3并按下回车,查看系统开放端口---------------
@echo -------------------4.输入数字4并按下回车,查看系统开放共享---------------
@echo -------------------5.输入其他字符并按下回车,终止本程序------------------
@echo.
@echo.
set /p num=
if "%num%"=="1" (
cls
@echo #########################################################################
@echo.
@echo                             DAVID多功能工具  
@echo.   
@echo #########################################################################
cls
tasklist
set /p a=要结束进程吗?(Y/N)
if /i "%a%"=="y" goto kill
if /i "%a%"=="n" goto begin
)
if "%num%"=="2" (
cls
@echo #########################################################################
@echo.
@echo                             DAVID多功能工具  
@echo.   
@echo #########################################################################
net user
pause
goto begin
)
if "%num%"=="3" (
cls
@echo #########################################################################
@echo.
@echo                             DAVID多功能工具  
@echo.   
@echo #########################################################################
netstat -an
pause
goto begin
)
if "%num%"=="4" (
cls
@echo #########################################################################
@echo.
@echo                             DAVID多功能工具  
@echo.   
@echo #########################################################################
net share
pause
goto begin
)
:kill
@echo.
@echo.
set /p pid=请输入要结束进程的PID值:
taskkill /pid "%pid%"
goto begin
作者: 随风    时间: 2009-4-26 20:25

提问不要把你所有的代码都搬上来,应该把代码裁减到最短,否则谁都没有耐心去从那一片没有问题的代码挑出错误来
Q:所发代码不止一行时请用 code 把代码扩起来
A:如何用code把代码扩起来 ,请点我。

[ 本帖最后由 随风 于 2009-4-26 20:29 编辑 ]
作者: wei120195534    时间: 2009-4-26 21:15

  1. @echo off
  2. @echo 试试看
复制代码

作者: Batcher    时间: 2009-4-26 21:34

  1. @echo off
  2. :begin
  3. cls
  4. echo #########################################################################
  5. echo.
  6. echo                             DAVID多功能工具  
  7. echo.   
  8. echo #########################################################################
  9. echo.
  10. echo.
  11. echo                            请选择你想要的操作
  12. echo -------------------1.输入数字1并按下回车,查看系统进程-------------------
  13. echo -------------------2.输入数字2并按下回车,查看系统用户-------------------
  14. echo -------------------3.输入数字3并按下回车,查看系统开放端口---------------
  15. echo -------------------4.输入数字4并按下回车,查看系统开放共享---------------
  16. echo -------------------5.输入其他字符并按下回车,终止本程序------------------
  17. echo.
  18. echo.
  19. set /p num=
  20. if "%num%"=="1" (
  21.   cls
  22.   echo #########################################################################
  23.   echo.
  24.   echo                             DAVID多功能工具  
  25.   echo.   
  26.   echo #########################################################################
  27.   cls
  28.   tasklist
  29.   set /p a=要结束进程吗?(Y/N)
  30.   if /i "%a%"=="y" (
  31.     goto :kill
  32.   ) else if /i "%a%"=="n" (
  33.     goto :begin
  34.   )
  35. ) else if "%num%"=="2" (
  36.   cls
  37.   echo #########################################################################
  38.   echo.
  39.   echo                             DAVID多功能工具  
  40.   echo.   
  41.   echo #########################################################################
  42.   net user
  43.   pause
  44.   goto :begin
  45. ) else if "%num%"=="3" (
  46.   cls
  47.   echo #########################################################################
  48.   echo.
  49.   echo                             DAVID多功能工具  
  50.   echo.   
  51.   echo #########################################################################
  52.   netstat -an
  53.   pause
  54.   goto :begin
  55. ) else if "%num%"=="4" (
  56.   cls
  57.   echo #########################################################################
  58.   echo.
  59.   echo                             DAVID多功能工具  
  60.   echo.   
  61.   echo #########################################################################
  62.   net share
  63.   pause
  64.   goto :begin
  65. )
  66. goto :eof
  67. :kill
  68. echo.
  69. echo.
  70. set /p pid=请输入要结束进程的PID值:
  71. taskkill /pid "%pid%"
  72. goto :begin
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2