批處理添加打印機

環境說明:

  • 打印機是在局域網中一臺打印服務器共享的打印機
  • 需要添加打印機的系統為win7x64。因打印機比較老,沒有win7x64的驅動程序,咨詢廠家得到下面的解決辦法:
    正常手動添加打印機的步驟:
  1. 【添加打印機】
  2. 【添加本地打印機】
  3. 【創建新端口】
  4. 【端口類型:Local Port】
  5. 【輸入端口名:\\\192.168.1.8\HPLaserJ
  6. 選擇廠商【HP】
  7. 打印機選擇【HP LaserJet 3050 PCL5】
  8. 一直下一步完成。

批處理解決過程:

獲取打印機端口號:

  • 先按照常規的方法添加一次打印機
  • 然后點擊【開始】-【運行】-輸入regedit打開【注冊表編輯器】
  • 搜索端口\\\192.168.1.8\HPLaserJ
    得到下面兩條記錄:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Ports
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports
    在這個路徑下面有一個【字符串值】,名字都是剛才添加打印機用的端口。
    經驗證發現兩條是關聯的,修改一條,另外一條也會更改。

獲取打印機驅動文件:

  • 打印機上面點擊右鍵,在彈出的菜單中選擇【打印機屬性】
  • 然后點擊【關于標簽】
  • 在驅動【程序文件(R)】列表下面有用到的相關驅動文件;
  • 我選擇了第一個作為搜索條件【HPC3050F.GPD】
  • 打開我的電腦進入【C盤(系統盤)】搜索關鍵詞【HPC3050F】
  • 得到了一個inf的文件是【C:\Windows\inf\prnhp002.inf】

添加打印機的腳本

端口號有了,inf驅動文件也有了。剩下的就好解決了。

@echo off
echo;添加HP LaserJet 3050 打印機
ver|find "6.1">nul&& goto :win7
rem 環境中只有兩種系統,不是win7就是xp
echo;添加中
rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\SZ-打印機\HPLaserJ"
echo;設置默認打印機中
rundll32 printui.dll,PrintUIEntry /y /n "\\SZ-打印機\HPLaserJ"
echo;操作完成。
echo;按任意鍵退出。
pause>nul&exit
:win7
echo;
echo;添加端口:&echo;------------------------
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" /s |find "\\172.16.12.8\HPLaserJ" >nul 2>nul
if %errorlevel% equ 0 (
 echo;端口已存在。) else (
 REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" /v \\172.16.12.8\HPLaserJ /t REG_SZ /f
)
echo;
echo;添加打印機:&echo;------------------------
(for /f "skip=5 tokens=7 delims=\" %%i in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers') do echo %%i)|find "HP LaserJet 3050">nul 2>nul
if %errorlevel% equ 0 (
 echo;HP LaserJet 3050已存在。) else (
 echo;正在添加中。。。
 rundll32 printui.dll,PrintUIEntry /if /b "HP LaserJet 3050 PCL5" /f C:\Windows\inf\prnhp002.inf /r "\\172.16.12.8\HPLaserJ" /m "HP LaserJet 3050 PCL5" /z
 echo;正在設置為默認打印機
 rundll32 printui.dll,PrintUIEntry /n "HP LaserJet 3050 PCL5" /y
)
echo:&echo;操作完成。
echo;
echo;按任意鍵退出。
pause>nul&exit

別的方法實現自動安裝打印機:printer management

在網上搜到另外一個更好的方法,不過該方法需要有驅動才行,未做測試,留下備用。

http://bbs.51cto.com/thread-1070667-1-1.html

第一步: 在機器上安裝,共享打印機.(使用print management必須是打印服務器的本地打印機)

  1. 在您的服務器上打印機的驅動.
  2. 分別共享這臺打印機
  3. 分別嘗試用去連接這臺打印機,確認都已經被正確的共享了
  4. 分別右鍵”控制面板\打印機”下面的打印機,點屬性.
  5. 檢查屬性”共享”選項卡,其中 “列入目錄”都已經勾上了.

第二步:在服務器安裝printer management

  1. 用域管理員身份登錄服務器
  2. 打開 “控制面板\添加刪除程序”
  3. 點擊 “添加刪除windows組件”
  4. 雙擊 “管理和監視工具\打印管理組件”
  5. 完成安裝.

第三部:配置打印管理

  1. 用域管理員身份登錄服務器
  2. 打開”管理工具\打印管理”
  3. 右鍵 “驅動程序”選擇”管理驅動程序”
  4. 點擊打印機,然后按”添加”.
  5. 安裝上您域中機器需要用到的驅動.
  6. 應用這些配置.

第四部:部署打印機

  1. 用域管理員身份登錄服務器
  2. 打開”管理工具\打印管理”
  3. 點擊”打印機”
  4. 在右面的窗口中,選擇一臺打印機,右鍵它并且選擇”從組策略部署”
  5. 在新窗口中點擊”瀏覽”,選擇一個合適的組策略來部署. 如果您需要部署到整個域的話,只要選擇”默認域策略(Default domain policy)”
  6. 完成之后,您可以在下面的”已部署的打印機中看到”
  7. 檢查默認組策略中, 打印部署相關的項是否正確添加了.
  8. 確認無誤之后,客戶端下一次重新啟動就會自動安裝上這臺打印機了

PrintUIEntry的詳細參數說明

用法: rundll32 printui.dll,PrintUIEntry [options] [@commandfile]
   /a[file] 二進制文件名
   /b[name] 基本打印機名
   /c[name] 如果操作在遠程機器上,unc 機器名
   /dl 刪除本地打印機
   /dn 刪除網絡打印機連接
   /dd 刪除打印機驅動程序
   /e 顯示打印首選項
   /f[file] inf 文件或輸出文件
   使用 /f 指定的 INF 文件可能依賴的 INF 文件的 /F[file] 位置
   /ga 添加每個機器打印機連接(用戶登錄時此連接將傳播到用戶)
   /ge 枚舉每個機器打印機連接
   /gd 刪除每個機器打印機連接(用戶登錄時此連接將被刪除)
   /h[arch] 驅動程序體系結構,為下列之一: x86 或 x64 或 Itanium 
   /ia 用 INF 文件安裝打印機驅動程序
   /id 用添加打印機驅動程序向導安裝打印機驅動程序
   /if 用 INF 文件安裝打印機
   /ii 用帶 INF 文件的添加打印機向導安裝打印機
   /il 用添加打印機向導安裝打印機
   /in 添加網絡打印機連接
   /ip 使用網絡打印機安裝向導安裝打印機
   /j[provider] 打印提供程序名稱
   /k 將測試頁打印到指定的打印機,不能安裝打印機時的命令組合
   /l[path] 打印機驅動程序源路徑
   /m[model] 打印機驅動程序型號名
   /n[name] 打印機名
   /o 顯示打印機隊列查看
   /p 顯示打印機屬性
   /q 安靜模式,不顯示錯誤信息
   /r[port] 端口名
   /s 顯示服務器屬性
   /Ss 將打印機設置存到一個文件
   /Sr 從一個文件還原打印機設置
   儲存或還原必須放在命令結尾的打印機設置選項標志:
 2 PRINTER_INFO_2
 7 PRINTER_INFO_7
 c 顏色配置文件
 d 打印機數據
 s 安全描述符
 g 全局 DevMode
 m 最低設置
 u 用戶 DevMode
 r 解決名稱沖突
 f 強制使用名稱
 p 解析端口
 i 驅動程序名稱沖突
   /u 如果已安裝,則使用現有的打印機驅動程序
   /t[#] 起始的以零為基礎的索引頁
   /v[version] 驅動程序版本,為下列之一:“類型 2 - 內核模式”或“類型 3 - 用戶模式”
   /w 如果在 INF 中找不到指定的驅動程序,則提示用戶
   /y 將打印機設置為默認打印機
   /Xg 獲得打印機設置
   /Xs 設定打印機設置
   /z 不要自動共享這臺打印機
   /Z 不要自動生成打印機名
   /K 更改 /h 的含義,使 x86 或 x64 或 Itanium 接受 2、3、4,并更改 /v 的含義,使“類型 3 - 用戶模式”接受 3
   /Z 共享這臺打印機,只能跟 /if 選項一起使用
   /? 幫助信息
   @[file] 命令行參數文件
   /Mw[message] 確認命令之前顯示警告消息
   /Mq[message] 確認命令之前顯示確認消息
   /W[flags] 指定向導(APW 和 APDW)的標志和切換
 r 使向導可以從上一頁重新啟動
   /G[flags] 指定全局標志和切換
 w 抑制安裝程序驅動程序警告 UI (超級靜聲模式)

例如:
   運行服務器屬性: 
rundll32 printui.dll,PrintUIEntry /s /t1 /c\\machine
   運行打印機屬性: 
rundll32 printui.dll,PrintUIEntry /p /n\\machine\printer
   本地運行添加打印機向導: 
rundll32 printui.dll,PrintUIEntry /il 
   在 \\machine: 
rundll32 printui.dll,PrintUIEntry /il /c\\machine 運行添加打印機向導
   運行隊列查看: 
rundll32 printui.dll,PrintUIEntry /o /n\\machine\printer
   運行 INF 安裝: 
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /f c:\infpath\infFile.inf /r "lpt1:" /m "Brother DCP-128C"
   運行 INF 安裝(具有 INF 依賴關系)。在此示例中,prnbr002.inf 依賴于 ntprint.inf
rundll32 printui.dll, PrintUIEntry /ia /m "Brother DCP-128C" /K /h x64 /v 3 /f "c:\infpath\prnbr002.inf" /F "c:\infpath\ntprint.inf"
   使用 INF 運行添加打印機向導: 
rundll32 printui.dll,PrintUIEntry /ii /f c:\infpath\infFile.inf
   使用內置打印機驅動程序添加打印機: 
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /r "lpt1:" /m "Brother DCP-128C"
   添加每個機器打印機連接(用戶登錄時此連接將傳播到用戶): 
rundll32 printui.dll,PrintUIEntry /ga /c\\machine /n\\machine\printer /j"LanMan Print Services"
   刪除每個機器打印機連接(用戶登錄時此連接將被刪除): 
rundll32 printui.dll,PrintUIEntry /gd /c\\machine /n\\machine\printer
   枚舉每個機器打印機連接: 
rundll32 printui.dll,PrintUIEntry /ge /c\\machine
   使用 INF 添加打印機驅動程序: 
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode" /f c:\infpath\infFile.inf
   使用 INF 添加打印機驅動程序: 
rundll32 printui.dll,PrintUIEntry /ia /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
   添加內置打印機驅動程序: 
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "Intel" /v "Type 3 - Kernel Mode"
   刪除打印機驅動程序: 
rundll32 printui.dll,PrintUIEntry /dd /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode"
   刪除打印機驅動程序: 
rundll32 printui.dll,PrintUIEntry /dd /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
   將打印機設置為默認打印機: 
rundll32 printui.dll,PrintUIEntry /y /n "printer"
   設置打印機注解: 
rundll32 printui.dll,PrintUIEntry /Xs /n  "printer" comment "My Cool Printer"
   取得打印機設置: 
rundll32 printui.dll,PrintUIEntry /Xg /n "printer"
   取得文件中的打印機設置保存結果: 
rundll32 printui.dll,PrintUIEntry /f "results.txt" /Xg /n "printer"
   設置打印機設置命令使用:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ?
   將所有打印機設置存入一個文件: 
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ?
   從一個文件還原所有打印機設置: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat"
   將二級打印機信息存入一個文件: 
rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat" 2
   從一個文件還原打印機安全描述符: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" s
   從一個文件還原打印機全局 devmode 和打印機數據: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" g d
   從文件最少設置還原并分析端口名: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" m p
   啟用打印機的客戶端呈現: 
rundll32 printui.dll,PrintUIEntry /Xs /n"printer" ClientSideRender enabled
   禁用打印機的客戶端呈現: 
rundll32 printui.dll,PrintUIEntry /Xs /n"printer" ClientSideRender disabled
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容