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

[文本处理] [已解决]求助批处理人机交互,层级选择菜单怎么做出来?(本人小白...)

本帖最后由 xiang1771 于 2018-8-29 22:43 编辑

我想做一个各楼层各部门自动安装网络打印机的脚本,现在单独的打印机脚本我做出来了。
现在需求是:做一个 人机交互脚本去执行某一脚本。
一层的我会做了,后面两层该用什么命令怎么写,求大神做个简单的实例。
本人小白。谢谢大家了~
  1. @echo off
  2. rem 菜单界画
  3. color 0A
  4. echo.
  5. echo ================================
  6. echo             全自动安装打印机
  7. echo.     ================================
  8. echo     请层级输入楼层,部门,打印机型号
  9. echo.    ================================
  10. echo       按回车键确认
  11. echo. ================================
  12. echo.
  13. echo.
  14. echo [15] 楼层部门打印机
  15. echo.
  16. echo [16] 楼层部门打印机
  17. echo.
  18. echo [17] 楼层部门打印机
  19. echo.
  20. echo [18] 楼层部门打印机
  21. echo.
  22. echo [19] 楼层部门打印机
  23. echo.
  24. echo [20] 楼层部门打印机
  25. echo.
  26. echo [21] 楼层部门打印机
  27. echo.
  28. echo [22] 楼层部门打印机
  29. echo.
  30. echo.
  31. rem
  32. rem 选择[15]楼层跳转菜单 1A;2B;3C (ABC要换行的那种) ???????
  33. rem 选择1A跳转菜单 执行当前目录的X;Y;Z的脚本(XYZ要换行的那种 ???????
  34. rem 下面是跳转层的具体命令
  35. set choice=
  36. set /p choice=          请选择:
  37. IF NOT "%choice%"=="" SET choice=%choice:~0,1%
  38. if /i "%choice%"=="15" goto ?????
  39. if /i "%choice%"=="16" goto ?????
  40. if /i "%choice%"=="17" goto
  41. if /i "%choice%"=="18" goto
  42. if /i "%choice%"=="19" goto
  43. if /i "%choice%"=="20" goto
  44. if /i "%choice%"=="21" goto
  45. if /i "%choice%"=="22" goto
  46. echo 选择无效,请重新输入
  47. echo.
  48. pause
复制代码

回复 6# xczxczxcz


    谢谢了。思路学会了。

TOP

回复 7# hlzj88

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports]
"StatusUpdateInterval"=dword:0000000a
"StatusUpdateEnabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_11.150.182.201]
"Protocol"=dword:00000002
"Version"=dword:00000002
"HostName"="11.150.182.201"
"IPAddress"=""
"HWAddress"=""
"PortNumber"=dword:00000203
"SNMP Community"="public"
"SNMP Enabled"=dword:00000001
"SNMP Index"=dword:00000001
"PortMonMibPortIndex"=dword:00000001
"Queue"="print"
"Double Spool"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Monitors\Standard TCP/IP Port\Ports]
"StatusUpdateInterval"=dword:0000000a
"StatusUpdateEnabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_11.150.182.201]
"Protocol"=dword:00000002
"Version"=dword:00000002
"HostName"="11.150.182.201"
"IPAddress"=""
"HWAddress"=""
"PortNumber"=dword:00000203
"SNMP Community"="public"
"SNMP Enabled"=dword:00000001
"SNMP Index"=dword:00000001
"PortMonMibPortIndex"=dword:00000001
"Queue"="print"
"Double Spool"=dword:00000000

@echo off
echo 正在安装...
title 打印机自动安装程序
echo 正在安装(理光)RICOH_3501_打印机,请稍等……
echo.
echo 如果360安全卫士拦截了,允许运行
echo.
echo 如果运行本程序出现异常或者程序运行后未能安装打印机,请联系管理员
echo.


:64bit
echo 正在为您安装64位打印机驱动
echo.
rem 导入添加端口的注册表文件
reg import add_port.reg
if errorlevel 0 echo 网络打印机端口安装成功
echo.
echo 正在重启打印服务,请稍等……
echo.
rem 必须重启打印服务才能成功添加端口
net stop spooler>nul
net start spooler>nul
if errorlevel 0 echo 打印服务重启成功
echo ..............................................
echo ..............................................
echo 删除已经存在的同名打印机
rundll32 printui.dll,PrintUIEntry /dl /n "HP LaserJet MFP M725 PCL 6" /q
echo.
echo 安装(理光)RICOH_3501_打印机......
echo.

REM # /b 参数用于指定安装的打印机名称。
REM # /f 参数用于指定打印机的驱动文件。
REM # /r 具体的端口名称可以通过 打印机属性-->端口 那边去查看。
REM # /m 参数用于指定打印驱动程序的名称。
rundll32 printui.dll,PrintUIEntry /if /b "HP LaserJet MFP M725 PCL 6" /f "\\11.150.191.219\02常用驱动\1HP打印驱动\laserjet_m725\x86\hpcm725c.inf" /r "IP_11.150.182.201" /m "HP LaserJet MFP M725 PCL 6" /z

if errorlevel 0 echo 打印机安装成功
echo.
rem 安装好打印机后,也可以在批处理文件最后加一行命令,把这个打印机设置为默认。
echo.

echo 将这个打印机设置为默认打印机
rundll32 printui.dll,PrintUIEntry /y /n "HP LaserJet MFP M725 PCL 6"

goto end

第一个是改注册表的。reg
你看看,我这有个问题。能在脚本里写自动识别是32&64位的系统吗?然后识别出来自动安32或64的驱动,该怎么写。。。。

TOP

回复 5# xiang1771

哈哈,你忘了4楼的第29行,在之后加其他的。
目的,学习批处理

TOP

自己增删美化
  1. @echo off
  2. :SELECT
  3. rem 菜单界画
  4. color A
  5. echo.
  6. echo ================================
  7. echo             全自动安装打印机
  8. echo.     ================================
  9. echo     请层级输入楼层,部门,打印机型号
  10. echo.    ================================
  11. echo       按回车键确认
  12. echo. ================================
  13. echo.
  14. echo.
  15. echo [15] 楼层部门打印机
  16. echo.
  17. echo [16] 楼层部门打印机
  18. echo.
  19. echo [17] 楼层部门打印机
  20. echo.
  21. echo [18] 楼层部门打印机
  22. echo.
  23. echo [19] 楼层部门打印机
  24. echo.
  25. echo [20] 楼层部门打印机
  26. echo.
  27. echo [21] 楼层部门打印机
  28. echo.
  29. echo [22] 楼层部门打印机
  30. echo.
  31. echo [q] 退出
  32. rem 下面是跳转层的具体命令
  33. set choice=
  34. set /p choice=          请选择:
  35. echo %choice%|findstr "^1[5-9]$ ^2[0-2]$ q">nul 2>nul|| (cls &echo 选择无效,请重新输入& goto SELECT)
  36. if /i "%choice%"=="15" goto Floor_15
  37. if /i "%choice%"=="16" goto Floor_16
  38. if /i "%choice%"=="17" goto Floor_17
  39. if /i "%choice%"=="18" goto Floor_18
  40. if /i "%choice%"=="19" goto Floor_19
  41. if /i "%choice%"=="20" goto Floor_20
  42. if /i "%choice%"=="21" goto Floor_21
  43. if /i "%choice%"=="22" goto Floor_22
  44. if /i "%choice%"=="q" exit
  45. :Floor_15
  46. echo [1]信息科技部
  47. echo.
  48. echo.
  49. echo [2]渠道管理部
  50. echo.
  51. echo.
  52. echo [3]运维部门
  53. echo.
  54. echo. [0]返回主菜单
  55. echo.
  56. set/p F15_部门=      15楼部门请选择:
  57. echo %F15_部门%|findstr "^[0-3]$">nul 2>nul|| (cls &echo 选择无效,请重新输入& goto Floor_15)
  58. if /i "%F15_部门%"=="1" (set 标识 & call BUMEN & goto Floor_15 )
  59. if /i "%F15_部门%"=="2" (set 标识 & call BUMEN & goto Floor_15 )
  60. if /i "%F15_部门%"=="3" (set 标识 & call BUMEN & goto Floor_15 )
  61. if /i "%F15_部门%"=="0" goto SELECT
  62. :Floor_16
  63. echo [1]网络金融部
  64. echo.
  65. echo.
  66. echo [2]个人金融部
  67. echo.
  68. echo.
  69. echo [3]后勤事务部
  70. echo.
  71. echo.
  72. echo [4]客服中心
  73. echo.
  74. echo. [0]返回主菜单
  75. echo.
  76. set/p F16_部门=      16楼部门请选择:
  77. echo %F16_部门%|findstr "^[0-4]$">nul 2>nul|| (cls &echo 选择无效,请重新输入& goto Floor_16)
  78. if /i "%F16_部门%"=="1" (set 标识 & call BUMEN & goto Floor_16 )
  79. if /i "%F16_部门%"=="2" (set 标识 & call BUMEN & goto Floor_16 )
  80. if /i "%F16_部门%"=="3" (set 标识 & call BUMEN & goto Floor_16 )
  81. if /i "%F16_部门%"=="4" (set 标识 & call BUMEN & goto Floor_16 )
  82. if /i "%F16_部门%"=="0" goto SELECT
  83. :Floor_17
  84. :Floor_18
  85. :Floor_19
  86. :Floor_20
  87. :Floor_21
  88. :Floor_22
  89. :kefu
  90. pause & exit
  91. :BUMEN
  92. 1.bat内容 脚本中用通用标识变量
  93. xxxxxxxxxxxxxxxxxxxxx运行后。
  94. goto :eof
复制代码
===============================
1

评分人数

    • xiang1771: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

本帖最后由 xiang1771 于 2018-8-26 18:13 编辑

回复 4# hlzj88

    OK,谢谢了,哥们。下级菜单出来了。
    但是我选择15的时 16的内容也会显示出来。用什么隔断一下?
  1. @echo off
  2. rem 菜单界画
  3. color 0A
  4. echo.
  5. echo ================================
  6. echo             全自动安装打印机
  7. echo.     ================================
  8. echo     请层级输入楼层,部门,打印机型号
  9. echo.    ================================
  10. echo       按回车键确认
  11. echo. ================================
  12. echo.
  13. echo.
  14. echo [15] 楼层部门打印机
  15. echo.
  16. echo [16] 楼层部门打印机
  17. echo.
  18. echo [17] 楼层部门打印机
  19. echo.
  20. echo [18] 楼层部门打印机
  21. echo.
  22. echo [19] 楼层部门打印机
  23. echo.
  24. echo [20] 楼层部门打印机
  25. echo.
  26. echo [21] 楼层部门打印机
  27. echo.
  28. echo [22] 楼层部门打印机
  29. echo.
  30. echo.
  31. rem 下面是跳转层的具体命令
  32. set choice=
  33. set /p choice=          请选择:
  34. IF NOT "%choice%"=="" SET choice=%choice:~0,2%
  35. if /i "%choice%"=="15" goto shiwu
  36. if /i "%choice%"=="16" goto shiliu
  37. if /i "%choice%"=="17" goto
  38. if /i "%choice%"=="18" goto
  39. if /i "%choice%"=="19" goto
  40. if /i "%choice%"=="20" goto
  41. if /i "%choice%"=="21" goto
  42. if /i "%choice%"=="22" goto
  43. echo 选择无效,请重新输入
  44. echo.
  45. :shiwu
  46. echo [1]信息科技部
  47. echo.
  48. echo.
  49. echo [2]渠道管理部
  50. echo.
  51. echo.
  52. echo [3]运维部门
  53. echo.
  54. echo.
  55. :shiliu
  56. echo [1]网络金融部
  57. echo.
  58. echo.
  59. echo [2]个人金融部
  60. echo.
  61. echo.
  62. echo [3]后勤事务部
  63. echo.
  64. echo.
  65. echo [4]客服中心
  66. set bumen=
  67. set /p bumen=          请选择:
  68. IF NOT "%bumen%"=="" SET choice=%bumen:~0,1%
  69. if /i "%bumen%"=="1" call %cd%\jiaoben\1.bat
  70. if /i "%bumen%"=="2" goto %cd%\
  71. if /i "%bumen%"=="3" goto
  72. if /i "%bumen%"=="4" goto kefu
  73. :kefu
  74. 123
  75. echo 选择无效,请重新输入
  76. echo.
  77. pause
复制代码

TOP

  1. @echo off
  2. rem 菜单界画
  3. color 0A
  4. :ks
  5. echo.
  6. echo ================================
  7. echo             全自动安装打印机
  8. echo.     ================================
  9. echo     请层级输入楼层,部门,打印机型号
  10. echo.    ================================
  11. echo       按回车键确认
  12. echo. ================================
  13. echo.
  14. echo.
  15. echo [15] 楼层部门打印机
  16. echo.
  17. rem 下面是跳转层的具体命令
  18. set choice=
  19. set /p choice=          请选择:
  20. IF NOT "%choice%"=="" SET choice=%choice:~0,2%
  21. if /i "%choice%"=="15" goto shiwu
  22. echo 选择无效,请重新输入
  23. goto ks
  24. :shiwu
  25. 你的代码
  26. exit 或 goto ks
复制代码
把你的简化了,能看明白就行
目的,学习批处理

TOP

回复 2# hlzj88


    安装网打的脚本在单位。周一我发上来。其实就是两个脚本,一个修改端口一个安装驱动的。

我这个脚本下一级菜单该怎么做出来?
假如我选择15 按回车,它应该弹出来下一级菜单。这个该怎么写?

TOP

  1. IF NOT "%choice%"=="" SET choice=%choice:~0,1%
复制代码
这是你的第38句,%choice:~0,1%限定了取1位数,但你没有1goto什么,2goto什么。改为%choice:~0,2%即可。

对你的安装网络打印机的bat很赶兴趣,因为也用的着,要是可能,麻烦你贴出来。谢谢!
1

评分人数

    • xiang1771: 感谢给帖子标题标注[已解决]字样技术 + 1
目的,学习批处理

TOP

返回列表