![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 07:57 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 請教 (一) .... |
| 可打印版本 655 / 0 |
| 第1楼 qoozen | 发表于 2008-01-20 18:46 |
| 初级用户 发帖 7 积分 22 | |
|
請教 (一) .... 各位好,我剛學寫CMD的腳本,從這個論壇學到不小關於這方面的使用技巧,
先謝過各高手的之前的文章(獲益良多)...在此有這問題想請教一下大家一些問題.. 處境: 我是一個Desktop support來的,有時懶得很就會想寫一些cmd腳本去處理問題... 例如好像我最近想實現一個腳本就是可以遠端幫用戶加Network printer, 我的概念是只知道電腦名稱(IP也可以), Printer 的號碼 (我工作環境很搞笑的...Printer Name就是用一些Barcode來設定,但公司又經常改動設定名稱的方式,有時會加些數字,有時又會加個英文字,一個printer又有多個print Q ,而且又有2個Print server,有些會在Printerserver01有些則在02) 基本上這些問題在腳本中我都已經解決了, 但是就是如何幫遠端的用戶加裝Network Printer 而煩惱,之前找到個指令 rundll32.exe printui.dll, PrintUIEntry /il /c\\pc name /n\\server name\printer name來實現,但又不知如何用rundll32.exe printui.dll根本執行不到遠端加裝的功能,那唯有在Red Add入手,用上reg QUERY來取得當前用戶的SID,取改動HKU裡面的Printers\Connections來實現加裝的功能.....但問題又出現了,因為Windows如果多一個用戶登陸就會產生多個SID在HKU裡, 執行我的腳本後根本不能準確地加裝到正確的用戶中...我只能做到排除localadmin的SID,不是高手們有沒有方法能實現這個功能呢 ? 以下是小弟的腳本,順便高手們看看有沒有能簡化或改進的地方.... @Echo off TITLE Remote Add printer setlocal enabledelayedexpansion Echo. Set 'PC'='' Set 'BC'='' Set 'result'='' Set /p PC= PC Name : Set /p BC= Printer Barcode : BC Ping -n 1 %PC%>nul >2 >nul || Echo Can't PING %PC% && pause && goto :eof :A for %%i in (01,02) do ( for /f %%b in ('net view \\PrinterServer%%i ^| find "%BC%"') do ( Set /A result+=1 if !result! == 1 Set P1=\\PrinterServer%%i\%%b if !result! == 2 Set P2=\\PrinterServer%%i\%%b if !result! == 3 Set P3=\\PrinterServer%%i\%%b ) ) echo. if '%P1%' == '' ( echo No Printer Find in Printer Server & goto :End ) else ( echo -- %P1% ) if not '%P2%' == '' echo -- %P2% if not '%P3%' == '' echo -- %P3% :B Set /p AA=Please choice the printer : if %AA% gtr %result% echo "error !!" & goto :B if %AA% == 1 Set AA=%P1% if %AA% == 2 Set AA=%P2% if %AA% == 3 Set AA=%P3% :C for /f %%e in ('reg QUERY \\%PC%\HKU') do ( for /f "eol= tokens=10,11 delims=\-_ " %%n in ("%%e") do ( if not %%n == 500 ( if '%%o' == '' Set SID=%%e ) ) ) Echo. Echo Add %AA% to %PC% Reg Add \\%PC%\!SID:_Classes=!\Printers\Connections\%AA:\=,% /v Server /t REG_MULTI_SZ /d %AA:~0,13% Reg Add \\%PC%\!SID:_Classes=!\Printers\Connections\%AA:\=,% /v Provider /t REG_MULTI_SZ /d win32spl.dll>nul >2 >nul :End echo Done... Pause & goto :eof [ Last edited by qoozen on 2008-1-20 at 06:48 PM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |