Board logo

标题: [系统相关] 高手支招, 使用批处理修改非默认打印机名称 [打印本页]

作者: 5i365    时间: 2021-11-2 15:44     标题: 高手支招, 使用批处理修改非默认打印机名称

本帖最后由 5i365 于 2021-11-2 15:47 编辑

学校的电脑上有一台默认的打印机, 两台非默认的打印机,

我想把两台非默认的打印机改名字, 名字格式为
第一台非默认的打印机新名字为:
计算机名_2_打印机名
第二台非默认的打印机新名字为:
计算机名_3_打印机名
以此类推

自己组合最下面的两段代码为一代码如下, 执行时总是报错, 但单独的两段代码,都可以执行成功, 请高手指点错误所在, 非常感谢!

set n=2
for /f "skip=2 tokens=1,2* delims=," %%i in ('wmic printer where "default=false" get name /format:csv 2^>nul') do (
        set pr_name=%%j
        set newpr_name=%COMPUTERNAME%_%n%_%%j
        Cscript C:\Windows\System32\Printing_Admin_Scripts\zh-CN\prncnfg.vbs -z "%newpr_name%" -x -p "pr_name"
        set /a n+1
)

----------------------------------------------------------------百度没有找到相关代码, 通过谷歌找了如下代码

1.获取所有非默认打印机代码:
set n=2
for /f "skip=2 tokens=1,2* delims=," %%i in ('wmic printer where "default=false" get name /format:csv 2^>nul') do (
        echo %%j
        set pr_name=%%j
        set newpr_name=%COMPUTERNAME%_%n%_%%j
        set /a n+1
)

2.更改打印机名代码:
Cscript C:\Windows\System32\Printing_Admin_Scripts\zh-CN\prncnfg.vbs -z "%newpr_name%" -x -p "pr_name"
作者: Batcher    时间: 2021-11-2 16:01

回复 1# 5i365
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=2
  4. for /f "skip=2 tokens=1,2* delims=," %%i in ('wmic printer where "default=false" get name /format:csv 2^>nul') do (
  5.     echo %%j
  6.     set pr_name=%%j
  7.     set newpr_name=%COMPUTERNAME%_!n!_%%j
  8.     echo !pr_name!
  9.     echo !newpr_name!
  10.     cscript C:\Windows\System32\Printing_Admin_Scripts\zh-CN\prncnfg.vbs -z "!newpr_name!" -x -p "!pr_name!"
  11.     set /a n+=1
  12. )
复制代码
请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: 5i365    时间: 2021-11-2 17:02

回复 2# Batcher


    hp LaserJet 1010 HB
hp LaserJet 1010 HB
WIN7_2_hp LaserJet 1010 HB
Microsoft (R) Windows Script Host Version 5.8
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。

错误 0x8004103A 无效的对象路径 010 HB
Adobe PDF
Adobe PDF
WIN7_2_Adobe PDF
Microsoft (R) Windows Script Host Version 5.8
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。

错误 0x8004103A 无效的对象路径
请按任意键继续. . .
作者: 5i365    时间: 2021-11-2 17:02

本帖最后由 5i365 于 2021-11-2 17:04 编辑

前三行显示是正确的, 后面就无法执行了

另外, n的值没变
作者: Batcher    时间: 2021-11-2 17:37

回复 4# 5i365


    2楼第11行代码已更新,你再试试n的值是否有变化。
作者: 5i365    时间: 2021-11-2 18:24

回复 5# Batcher


    感谢指点, 目前还是报无效路径的错误
作者: lancer    时间: 2021-11-3 10:37

wmic在win10中好像被弃用了
作者: Batcher    时间: 2021-11-3 10:43

回复 10# lancer


    你用的哪个版本的Win10?或者从什么地方看到了官方消息吗,请分享一下。
作者: qixiaobin0715    时间: 2021-11-3 10:55

好像是有这么回事。
  1. Microsoft Windows [版本 10.0.19042.1288]
  2. (c) Microsoft Corporation。保留所有权利。
  3. C:\Users\Administrator>wmic /?
  4. WMIC 已弃用。
  5. [全局开关] <命令>
  6. 可以使用以下全局开关:
  7. /NAMESPACE           别名在其上操作的命名空间的路径。
  8. /ROLE                包含别名定义的角色的路径。
  9. /NODE                别名在其上操作的服务器。
  10. /IMPLEVEL            客户端模拟级别。
  11. /AUTHLEVEL           客户端身份验证级别。
  12. /LOCALE              客户端应使用的语言 ID。
  13. /PRIVILEGES          启用或禁用所有权限。
  14. /TRACE               将调试信息输出到 stderr。
  15. /RECORD              记录所有输入命令和输出内容。
  16. /INTERACTIVE         设置或重置交互模式。
  17. /FAILFAST            设置或重置 FailFast 模式。
  18. /USER                会话期间要使用的用户。
  19. /PASSWORD            登录会话时要使用的密码。
  20. /OUTPUT              指定输出重定向模式。
  21. /APPEND              指定输出重定向模式。
  22. /AGGREGATE           设置或重置聚合模式。
  23. /AUTHORITY           指定连接的 <授权类型>。
  24. /?[:<BRIEF|FULL>]    用法信息。
  25. 有关特定全局开关的详细信息,请键入: switch-name /?
复制代码

作者: Batcher    时间: 2021-11-3 11:24

回复 12# qixiaobin0715


英文版本是:
WMIC is deprecated

通常理解为当前版本还能使用,但是不推荐作为首选方案,因为未来可能会被弃用。
作者: qixiaobin0715    时间: 2021-11-3 11:31

微软有时候中文翻译真的很蹩脚。
作者: lancer    时间: 2021-11-3 14:19

回复 10# Batcher


    我现在用的win10最新版,在cmd中输入wmic提示该命令已弃用,叫我换成Switch什么的
作者: qixiaobin0715    时间: 2021-11-3 14:26

微软翻译有问题。
在这里WMIC is deprecated中的deprecated应当翻译为“不建议使用的,过时的”,才比较贴切。




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