标题: [文本处理] [已解决]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的脚本,有点长。。。(我上传到附件了)我就粘出一句来吧。- if /i "%bumen%"=="1" call %cd%\bin\17\KJ7650dnf.bat
复制代码
- @echo off
- color 0A
- echo.
- echo ****************************
- echo 润达博宏打印机自动安装程序
- echo ****************************
- echo.
- echo.
- echo 正在安装17会计营运部Lenovo M7650DNF Printer打印机,请稍等……
- echo.
- echo 如果运行本程序出现异常或者程序运行后未能安装打印机,请联系管理员:89198815
- echo.
- echo.
- rem 自动判断电脑是32位还是64位
- if /i "%PROCESSOR_IDENTIFIER:~0,3%"=="X86" (goto 32bit) ELSE (goto 64bit)
-
- :64bit
- echo 正在为您安装64位打印机驱动
- echo.
- rem 导入添加端口的注册表文件
- reg import KJ7650dnf.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 "Lenovo M7650DNF Printer" /q
- echo.
- echo 安装Lenovo M7650DNF Printer打印机......
- echo.
- 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
- if errorlevel 0 echo 打印机安装成功
- echo.
- rem 安装好打印机后,也可以在批处理文件最后加一行命令,把这个打印机设置为默认。
- echo.
- echo 将这个打印机设置为默认打印机
- rundll32 printui.dll,PrintUIEntry /y /n "Lenovo M7650DNF Printer"
- goto end
-
- :32bit
- echo 正在为您安装32位打印机驱动
- echo.
- reg import KJ7650dnf.reg
- if errorlevel 0 echo 网络打印机端口安装成功
- echo.
- echo 正在重启打印服务,请稍等……
- echo.
- net stop spooler>nul
- net start spooler>nul
- if errorlevel 0 echo 打印服务重启成功
- echo ..............................................
- echo ..............................................
- echo 删除已经存在的同名打印机
- rundll32 printui.dll,PrintUIEntry /dl /n "Lenovo M7650DNF Printer" /q
- echo.
- echo 安装Lenovo M7650DNF Printer......
- echo.
- 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
- if errorlevel 0 echo 打印机安装成功
- echo.
- echo.
- echo 将这个打印机设置为默认打印机
- rundll32 printui.dll,PrintUIEntry /y /n "Lenovo M7650DNF Printer"
-
- :end
- echo 请按任意键退出
- pause>nul
-
- REM #*********************************************************************************
- REM #
- REM # /ia 用 inf 文件安装打印机驱动程序
- REM # /if 用 inf 文件安装打印机
- REM # /b[name] 基本打印机名
- REM # /c[name] 如果操作在远程机器上,unc 机器名
- REM # /dl 删除本地打印机
- REM # /dn 删除网络打印机连接
- REM # /dd 删除打印机驱动程序
- REM # /f[file] inf 文件或输出文件
- REM # /h[arch] 驱动程序体系结构,为下列之一: Alpha | Intel | IA64
- REM # /m[model] 打印机驱动程序型号名
- REM # /n[name] 打印机名
- REM # /v[version] 驱动程序版本属于下列中的一个: Windows 95、98 和 ME | Windows NT 4.0 | Windows NT 4.0 或 2000 | Windows 2000 或 XP| Windows XP
- REM # /q 安静模式,不显示错误信息
- REM # /r[port] 端口名
- REM # /y 将打印机设为默认打印机
- REM # /z 不要自动共享这台打印机
- REM # /Z 共享这台打印机,只能跟 /if 选项一起使用
- REM #其中/m参数后面的打印机驱动程序型号名为inf文件中用于指明驱动的Lenovo M7650DNF Printer,一般在使用向导安装的时候在选定inf文件后出来的所有驱动名称中你自己需要的那个。
- REM #
- REM # 更多的帮助请使用rundll32 printui.dll,PrintUIEntry /?
- REM #
- REM #*********************************************************************************
复制代码
这是2的。- 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.169.156]
- "Protocol"=dword:00000002
- "Version"=dword:00000002
- "HostName"="11.150.169.156"
- "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.169.156]
- "Protocol"=dword:00000002
- "Version"=dword:00000002
- "HostName"="11.150.169.156"
- "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
复制代码
这是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 (这个运行成功了。)
下面是成功的代码……。- @echo off
- color 0A
- echo.
- echo [ 15 ] 楼层部门打印机
- echo.
- rem 下面是跳转15层的具体命令
- set choice=
- set /p choice= 请输入您所在的楼层:
- IF NOT "%choice%"=="" SET choice=%choice:~0,2%
- if /i "%choice%"=="15" goto shiwu
- echo 选择无效,请重新输入
- rem 15层部门详细菜单
- :shiwu
- echo [ 1 ]信息科技部
- rem 15层部门详细命令 信息科技部=zhxx
- set choice=
- set /p choice= 请输入您所在的部门:
- IF NOT "%choice%"=="" SET choice=%choice:~0,1%
- if /i "%choice%"=="1" goto zhxx
- echo 选择无效,请重新输入
- echo.
- :zhxx
- echo ************
- echo 信息科技部
- echo ************
- echo.
- echo [ 1 ]zhxx打印机1
- echo.
- rem 15层zhxx打印机执行命令
- set bumen=
- set /p bumen= 请选择要安装的打印机:
- IF NOT "%bumen%"=="" SET choice=%bumen:~0,1%
- if /i "%bumen%"=="1" call %cd%\KJ7650dnf.bat
- pause & exit
复制代码
作者: Batcher 时间: 2018-8-30 11:27
回复 5# xiang1771
OK 解决问题就好
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |