[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理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值:

为什么会这样呢?是不是我没有释放变量??

改成:
if /i "%a%"=="y" goto kill
if /i "%a%"=="n" goto end
***共同提高***

TOP

回复 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

TOP

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

[ 本帖最后由 随风 于 2009-4-26 20:29 编辑 ]
技术问题请到论坛发帖求助!

TOP

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

TOP

  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表