中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-22 08:59
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问这个带有选择项的批处理是怎么样实现的 查看 3,611 回复 35
楼 主 请问这个带有选择项的批处理是怎么样实现的 发表于 2006-11-02 08:50 ·  中国 福建 泉州 晋江市 电信
初级用户
积分 97
发帖 40
注册 2006-11-01 13:59
19年会员
UID 69168
性别 男
状态 离线
CLS
COLOR 0A
GOTO MENU

:MENU
ECHO.
ECHO. =-=-=-=-=请选择要启动的服务项目=-=-=-=-=
ECHO.
ECHO. 1 启动-本机网络服务
ECHO.
ECHO. 2 启动-USB和COM服务
ECHO.
ECHO. 3 启动-DHCP和NAT服务
ECHO.
ECHO. 4 启动-用户权限服务
ECHO.
ECHO. 5 启动-启动全部服务
ECHO.
ECHO. 6 安装虚拟网卡1和8
ECHO.
ECHO. 7 退 出
ECHO.
ECHO.
ECHO.
CHOICE /C 1234567 /N /M 请输入选择项目的序号:
IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO SERVICE1
IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 GOTO SERVICE2
IF ERRORLEVEL 3 IF NOT ERRORLEVEL 4 GOTO SERVICE3
IF ERRORLEVEL 4 IF NOT ERRORLEVEL 5 GOTO SERVICE4
IF ERRORLEVEL 5 IF NOT ERRORLEVEL 6 GOTO SERVICE5
IF ERRORLEVEL 6 IF NOT ERRORLEVEL 7 GOTO SERVICE6
IF ERRORLEVEL 7 IF NOT ERRORLEVEL 8 GOTO END
PAUSE

:SERVICE1
NET START VMNETUSERIF
NET START VMNETBRIDGE
GOTO MENU

:SERVICE2
NET START HCMON
NET START VMPARPORT
GOTO MENU

:SERVICE3
SC CREATE VMnetDHCP BINPATH= "%WINDIR%\SYSTEM32\VMNETDHCP.EXE" DISPLAYNAME= "VMware DHCP Service" DEPEND= VMnetuserif
SC CREATE "VMware NAT Service" BINPATH= "%WINDIR%\SYSTEM32\VMNAT.EXE" DISPLAYNAME= "VMware NAT Service" DEPEND= VMnetuserif
NET START VMnetDHCP
NET START "VMware NAT Service"
GOTO MENU

:SERVICE4
SC CREATE VMAuthdService BINPATH= "%CD%\VMWARE-AUTHD.EXE" DISPLAYNAME= "VMware Authorization Service" DEPEND= vmx86
NET START VMAUTHDSERVICE
GOTO MENU

:SERVICE5
NET START VMNETUSERIF
NET START VMNETBRIDGE
SC CREATE VMnetDHCP BINPATH= "%WINDIR%\SYSTEM32\VMNETDHCP.EXE" DISPLAYNAME= "VMware DHCP Service" DEPEND= VMnetuserif
SC CREATE "VMware NAT Service" BINPATH= "%WINDIR%\SYSTEM32\VMNAT.EXE" DISPLAYNAME= "VMware NAT Service" DEPEND= VMnetuserif
NET START VMnetDHCP
NET START "VMware NAT Service"
NET START HCMON
NET START VMPARPORT
SC CREATE VMAuthdService BINPATH= "%CD%\VMWARE-AUTHD.EXE" DISPLAYNAME= "VMware Authorization Service" DEPEND= vmx86
NET START VMAUTHDSERVICE
GOTO MENU

:SERVICE6
DEVCON -R INSTALL %SYSTEMROOT%\INF\VMNETADAPTER.INF *VMnetAdapter1
DEVCON -R INSTALL %SYSTEMROOT%\INF\VMNETADAPTER.INF *VMnetAdapter8
GOTO MENU

:END

[ Last edited by namejm on 2006-11-2 at 09:37 AM ]
2 发表于 2006-11-02 09:25 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  主要是利用了choice命令的特性来实现的,不过xp系统好象没有自带这个命令。


[ Last edited by lxmxn on 2006-11-2 at 09:27 AM ]
3 发表于 2006-11-02 10:49 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
20年会员
UID 53056
状态 离线


  1. CLS
  2. COLOR 0A
  3. GOTO MENU

  4. :MENU
  5. ECHO.
  6. ECHO. =-=-=-=-=请选择要启动的服务项目=-=-=-=-=
  7. ECHO.
  8. ECHO. 1 启动-本机网络服务
  9. ECHO.
  10. ECHO. 2 启动-USB和COM服务
  11. ECHO.
  12. ECHO. 3 启动-DHCP和NAT服务
  13. ECHO.
  14. ECHO. 4 启动-用户权限服务
  15. ECHO.
  16. ECHO. 5 启动-启动全部服务
  17. ECHO.
  18. ECHO. 6 安装虚拟网卡1和8
  19. ECHO.
  20. ECHO. 7 退 出
  21. ECHO.
  22. ECHO.
  23. ECHO.
  24. set /p in = 请输入选择项目的序号:
  25. IF [%in%] == GOTO SERVICE1
  26. IF [%in%] == GOTO SERVICE2
  27. IF [%in%] == GOTO SERVICE3
  28. IF [%in%] == GOTO SERVICE4
  29. IF [%in%] == GOTO SERVICE5
  30. IF [%in%] == GOTO SERVICE6
  31. IF [%in%] == GOTO END
  32. PAUSE >nul

  33. :SERVICE1
  34. NET START VMNETUSERIF
  35. NET START VMNETBRIDGE
  36. GOTO MENU

  37. :SERVICE2
  38. NET START HCMON
  39. NET START VMPARPORT
  40. GOTO MENU

  41. :SERVICE3
  42. SC CREATE VMnetDHCP BINPATH= "%WINDIR%\SYSTEM32\VMNETDHCP.EXE" DISPLAYNAME= "VMware DHCP Service" DEPEND= VMnetuserif
  43. SC CREATE "VMware NAT Service" BINPATH= "%WINDIR%\SYSTEM32\VMNAT.EXE" DISPLAYNAME= "VMware NAT Service" DEPEND= VMnetuserif
  44. NET START VMnetDHCP
  45. NET START "VMware NAT Service"
  46. GOTO MENU

  47. :SERVICE4
  48. SC CREATE VMAuthdService BINPATH= "%CD%\VMWARE-AUTHD.EXE" DISPLAYNAME= "VMware Authorization Service" DEPEND= vmx86
  49. NET START VMAUTHDSERVICE
  50. GOTO MENU

  51. :SERVICE5
  52. NET START VMNETUSERIF
  53. NET START VMNETBRIDGE
  54. SC CREATE VMnetDHCP BINPATH= "%WINDIR%\SYSTEM32\VMNETDHCP.EXE" DISPLAYNAME= "VMware DHCP Service" DEPEND= VMnetuserif
  55. SC CREATE "VMware NAT Service" BINPATH= "%WINDIR%\SYSTEM32\VMNAT.EXE" DISPLAYNAME= "VMware NAT Service" DEPEND= VMnetuserif
  56. NET START VMnetDHCP
  57. NET START "VMware NAT Service"
  58. NET START HCMON
  59. NET START VMPARPORT
  60. SC CREATE VMAuthdService BINPATH= "%CD%\VMWARE-AUTHD.EXE" DISPLAYNAME= "VMware Authorization Service" DEPEND= vmx86
  61. NET START VMAUTHDSERVICE
  62. GOTO MENU

  63. :SERVICE6
  64. DEVCON -R INSTALL %SYSTEMROOT%\INF\VMNETADAPTER.INF *VMnetAdapter1
  65. DEVCON -R INSTALL %SYSTEMROOT%\INF\VMNETADAPTER.INF *VMnetAdapter8
  66. GOTO MENU

  67. :END

  68. 代码未测试
kcdsw 发表于: 2006-11-01 22:53
4 发表于 2006-11-02 10:51 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
2000/XP下没有chioce命令,要实现楼主所述功能,可以利用set /P
5 发表于 2006-11-02 12:03 ·  中国 福建 泉州 晋江市 电信
初级用户
积分 97
发帖 40
注册 2006-11-01 13:59
19年会员
UID 69168
性别 男
状态 离线
奇怪的是加入这个文件在WINDOWS中是可以运行了,可不管加入的是choice.exe或choice.com在dos中都不可以运行
6 发表于 2006-11-02 12:14 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  你把chioce.exe加到哪里去了?
7 发表于 2006-11-02 12:35 ·  中国 福建 泉州 晋江市 电信
初级用户
积分 97
发帖 40
注册 2006-11-01 13:59
19年会员
UID 69168
性别 男
状态 离线
TO:lxmxn

加到98启动盘生成的虚拟内存盘里,和批处理文件同在这个盘的根目录下

TO:kcdsw

谢谢你写的这个批处理,但还是没有成功,不管选哪个数值,它依然执行的是第一条
8 发表于 2006-11-02 12:56 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
如果加个检测语句,然后直接来个goto :service%in%会不会简单很多呢?
9 发表于 2006-11-02 13:08 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  应该加到系统的文件夹里面吧?
10 发表于 2006-11-02 13:13 ·  中国 福建 泉州 晋江市 电信
初级用户
积分 97
发帖 40
注册 2006-11-01 13:59
19年会员
UID 69168
性别 男
状态 离线
这个就不懂了,连加在哪都不懂了
11 发表于 2006-11-02 13:16 ·  中国 福建 泉州 晋江市 电信
初级用户
积分 97
发帖 40
注册 2006-11-01 13:59
19年会员
UID 69168
性别 男
状态 离线
Originally posted by lxmxn at 2006-11-2 01:08 PM:

  应该加到系统的文件夹里面吧?



系统找需要的文件都是从自身所处的文件夹里开始找起的,找不到才会到系统文件夹里找.DOS应该也不会例外吧,还有,我是想把这个批处理做到启动盘里的,就更不存在系统文件夹一说了
12 发表于 2006-11-02 20:38 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
13 发表于 2006-11-02 21:24 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
AUTOEXEC.BAT、NET START我在郁闷是纯DOS下还是XP运行此批处理啊?
第一高手 第二高手

14 发表于 2006-11-02 22:04 ·  中国 福建 泉州 晋江市 电信
初级用户
积分 97
发帖 40
注册 2006-11-01 13:59
19年会员
UID 69168
性别 男
状态 离线
choice是否在VM中用不了,发须在实机中使用?
15 发表于 2006-11-02 22:13 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
从Win2003中提取的CHOICE
http://www.cn-dos.net/forum/viewthread.php?tid=21689&fpage=1&highlight=choice

VM中是什么系统?一定要搞清纯DOS批处理还是CMD(XP)下批处理,2者有本质上的区别
第一高手 第二高手

论坛跳转: