Board logo

标题: [文本处理] [已解决]call 命令可以打开另一个BAT里面的.reg吗? [打印本页]

作者: xiang1771    时间: 2018-8-29 22:00     标题: [已解决]call 命令可以打开另一个BAT里面的.reg吗?

我三个脚本来安装网络打印机,1:人机交互选择楼层-部门-打印机的BAT。 2:添加网络端口的.reg  3:自动检测系统位数,安装共享文件驱动的.BAT
如果我直接用3来安装是可以安装的。
但把3放到1里面用call 就老是报错,好像是打不开网络端口。
好像是1用call打开3,3打不开2。
我想问一下call后面用加什么参数吗?或用别的命令能用做到。

1的脚本,有点长。。。(我上传到附件了)我就粘出一句来吧。
  1. if /i "%bumen%"=="1" call %cd%\bin\17\KJ7650dnf.bat
复制代码
  1. @echo off
  2. color 0A
  3. echo.
  4. echo ****************************
  5. echo 润达博宏打印机自动安装程序
  6. echo ****************************
  7. echo.
  8. echo.
  9. echo 正在安装17会计营运部Lenovo M7650DNF Printer打印机,请稍等……
  10. echo.
  11. echo 如果运行本程序出现异常或者程序运行后未能安装打印机,请联系管理员:89198815
  12. echo.
  13. echo.
  14. rem 自动判断电脑是32位还是64位
  15. if /i "%PROCESSOR_IDENTIFIER:~0,3%"=="X86" (goto 32bit) ELSE (goto 64bit)
  16. :64bit
  17. echo 正在为您安装64位打印机驱动
  18. echo.
  19. rem 导入添加端口的注册表文件
  20. reg import KJ7650dnf.reg
  21. if errorlevel 0 echo 网络打印机端口安装成功
  22. echo.
  23. echo 正在重启打印服务,请稍等……
  24. echo.
  25. rem 必须重启打印服务才能成功添加端口
  26. net stop spooler>nul
  27. net start spooler>nul
  28. if errorlevel 0 echo 打印服务重启成功
  29. echo ..............................................
  30. echo ..............................................
  31. echo 删除已经存在的同名打印机
  32. rundll32 printui.dll,PrintUIEntry /dl /n "Lenovo M7650DNF Printer" /q
  33. echo.
  34. echo 安装Lenovo M7650DNF Printer打印机......
  35. echo.
  36. rundll32 printui.dll,PrintUIEntry /if /b "Lenovo M7650DNF Printer" /f \\11.150.191.219\02常用驱动\2联想打印驱动\联想74-76系列\driver\gdi\64\LEPRM10A.INF /r "IP_11.150.169.156" /m "Lenovo M7650DNF Printer" /z
  37. if errorlevel 0 echo 打印机安装成功
  38. echo.
  39. rem 安装好打印机后,也可以在批处理文件最后加一行命令,把这个打印机设置为默认。
  40. echo.
  41. echo 将这个打印机设置为默认打印机
  42. rundll32 printui.dll,PrintUIEntry /y /n "Lenovo M7650DNF Printer"
  43. goto end
  44. :32bit
  45. echo 正在为您安装32位打印机驱动
  46. echo.
  47. reg import KJ7650dnf.reg
  48. if errorlevel 0 echo 网络打印机端口安装成功
  49. echo.
  50. echo 正在重启打印服务,请稍等……
  51. echo.
  52. net stop spooler>nul
  53. net start spooler>nul
  54. if errorlevel 0 echo 打印服务重启成功
  55. echo ..............................................
  56. echo ..............................................
  57. echo 删除已经存在的同名打印机
  58. rundll32 printui.dll,PrintUIEntry /dl /n "Lenovo M7650DNF Printer" /q
  59. echo.
  60. echo 安装Lenovo M7650DNF Printer......
  61. echo.
  62. rundll32 printui.dll,PrintUIEntry /if /b "Lenovo M7650DNF Printer" /f \\11.150.191.219\02常用驱动\2联想打印驱动\联想74-76系列\driver\gdi\32\LEPRM10A.INF /r "IP_11.150.169.156" /m "Lenovo M7650DNF Printer" /z
  63. if errorlevel 0 echo 打印机安装成功
  64. echo.
  65. echo.
  66. echo 将这个打印机设置为默认打印机
  67. rundll32 printui.dll,PrintUIEntry /y /n "Lenovo M7650DNF Printer"
  68. :end
  69. echo 请按任意键退出
  70. pause>nul
  71. REM #*********************************************************************************
  72. REM #
  73. REM # /ia 用 inf 文件安装打印机驱动程序
  74. REM # /if 用 inf 文件安装打印机
  75. REM # /b[name] 基本打印机名
  76. REM # /c[name] 如果操作在远程机器上,unc 机器名
  77. REM # /dl 删除本地打印机
  78. REM # /dn 删除网络打印机连接
  79. REM # /dd 删除打印机驱动程序
  80. REM # /f[file] inf 文件或输出文件
  81. REM # /h[arch] 驱动程序体系结构,为下列之一: Alpha | Intel | IA64
  82. REM # /m[model] 打印机驱动程序型号名
  83. REM # /n[name] 打印机名
  84. REM # /v[version] 驱动程序版本属于下列中的一个: Windows 95、98 和 ME | Windows NT 4.0 | Windows NT 4.0 或 2000 | Windows 2000 或 XP| Windows XP
  85. REM # /q 安静模式,不显示错误信息
  86. REM # /r[port] 端口名
  87. REM # /y 将打印机设为默认打印机
  88. REM # /z 不要自动共享这台打印机
  89. REM # /Z 共享这台打印机,只能跟 /if 选项一起使用
  90. REM #其中/m参数后面的打印机驱动程序型号名为inf文件中用于指明驱动的Lenovo M7650DNF Printer,一般在使用向导安装的时候在选定inf文件后出来的所有驱动名称中你自己需要的那个。
  91. REM #
  92. REM # 更多的帮助请使用rundll32 printui.dll,PrintUIEntry /?
  93. REM #
  94. REM #*********************************************************************************
复制代码
这是2的。
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports]
  3. "StatusUpdateInterval"=dword:0000000a
  4. "StatusUpdateEnabled"=dword:00000001
  5. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_11.150.169.156]
  6. "Protocol"=dword:00000002
  7. "Version"=dword:00000002
  8. "HostName"="11.150.169.156"
  9. "IPAddress"=""
  10. "HWAddress"=""
  11. "PortNumber"=dword:00000203
  12. "SNMP Community"="public"
  13. "SNMP Enabled"=dword:00000001
  14. "SNMP Index"=dword:00000001
  15. "PortMonMibPortIndex"=dword:00000001
  16. "Queue"="print"
  17. "Double Spool"=dword:00000000
  18. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Monitors\Standard TCP/IP Port\Ports]
  19. "StatusUpdateInterval"=dword:0000000a
  20. "StatusUpdateEnabled"=dword:00000001
  21. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_11.150.169.156]
  22. "Protocol"=dword:00000002
  23. "Version"=dword:00000002
  24. "HostName"="11.150.169.156"
  25. "IPAddress"=""
  26. "HWAddress"=""
  27. "PortNumber"=dword:00000203
  28. "SNMP Community"="public"
  29. "SNMP Enabled"=dword:00000001
  30. "SNMP Index"=dword:00000001
  31. "PortMonMibPortIndex"=dword:00000001
  32. "Queue"="print"
  33. "Double Spool"=dword:00000000
复制代码
这是3的。
作者: Batcher    时间: 2018-8-29 22:05

把三个文件一起打包压缩传上来看看
作者: xiang1771    时间: 2018-8-29 22:14

回复 2# Batcher


    上传了。23没问题。我直接从打开2就可以安装的。但用1跳转的话就出错。我感觉是我CALL命令那用的不对。
作者: Batcher    时间: 2018-8-30 09:44

回复 3# xiang1771


我下载你的压缩包之后
安装打印机.bat 里面没有看到在哪里 call KJ7650dnf.bat
上传错了吗?
作者: xiang1771    时间: 2018-8-30 10:34

回复 4# Batcher


    ....我刚才想把交互的脚本删下多余的,然后给您发上来。  删完以后我运行了,不报错了......
就有一点区别
if /i "%bumen%"=="1" call %cd%\bin\17\KJ7650dnf.bat  (这是之前的,运行出错)
之前我建了两个子目录,这次我直接放在当前目录了
if /i "%bumen%"=="1" call %cd%\KJ7650dnf.bat (这个运行成功了。)   

  下面是成功的代码……。
  1. @echo off
  2. color 0A
  3. echo.
  4. echo [ 15 ] 楼层部门打印机
  5. echo.
  6. rem 下面是跳转15层的具体命令
  7. set choice=
  8. set /p choice=          请输入您所在的楼层:
  9. IF NOT "%choice%"=="" SET choice=%choice:~0,2%
  10. if /i "%choice%"=="15" goto shiwu
  11. echo 选择无效,请重新输入
  12. rem 15层部门详细菜单
  13. :shiwu
  14. echo [ 1 ]信息科技部
  15. rem 15层部门详细命令 信息科技部=zhxx
  16. set choice=
  17. set /p choice=          请输入您所在的部门:
  18. IF NOT "%choice%"=="" SET choice=%choice:~0,1%
  19. if /i "%choice%"=="1" goto zhxx
  20. echo 选择无效,请重新输入
  21. echo.
  22. :zhxx
  23. echo   ************
  24. echo    信息科技部
  25. echo   ************
  26. echo.
  27. echo [ 1 ]zhxx打印机1
  28. echo.
  29. rem 15层zhxx打印机执行命令
  30. set bumen=
  31. set /p bumen=          请选择要安装的打印机:
  32. IF NOT "%bumen%"=="" SET choice=%bumen:~0,1%
  33. if /i "%bumen%"=="1" call %cd%\KJ7650dnf.bat
  34. pause & exit
复制代码

作者: Batcher    时间: 2018-8-30 11:27

回复 5# xiang1771


    OK 解决问题就好




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