用来备份自订印表机纸张的小工具

三不五时就会听到有人问要如何备份印表机伺服器内容里的自订纸张规格,很多人都说可以使用微软出品的Printmig 印表机管理程式,原来以为这个小工具可以备份纸张设定,实际操作却不然,不知是我不会还是真的不行,希望有以这个管理工具备份纸张成功的邦友也来分享一下,
实际操作时会发现选单里属于功能面的只有四个,本机,远端,备份,还原,项目清单里也没有关纸张设定的清单附图

也因为三不五时会用到备份及还原纸张设定,所以就自己做了一个方便使用。
使用方式将以下批次内容存成.bat档,要执行时先进入MSDOS输入CMD.EXE /V 在输入.BAT档名,可加参数,说明可参考.BAT内容说明

@ECHO OFFsetlocal   ENABLEDELAYEDEXPANSIONc:cd \REM 计数器SET C2=%1REM 目前状态 1备份 2还原SET F1=1REM 文字 还原或备份 SET F2=备份REM 快速键  还原A  备份BSET F3=AREM 切换用选单 备份MENUA0 还原MENUB0SET F4=MENUA0REM 目前现用程式 备份BACK 还原ADD SET F5=BACKREM 目前现用选单 备份MENUA1 还原MENUB1SET F6=MENUA1set REG=reg query hklm\SYSTEM\CurrentControlSet\Control\Print\Forms /sset QUERY=REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Print\Forms /vSET REREG=REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Print\Forms /T REG_BINARY /F /Vset FileName=%temp%\PaperSize.txtset BKF=Back.cpz:CHECKIF "%F1%"=="1" (SET F1=2SET F2=还原SET F3=ASET F4=MENUB0SET F5=BACKSET F6=MENUA1SET F7=备份) ELSE (SET F1=1SET F2=备份SET F3=BSET F4=MENUA0SET F5=ADDSET F6=MENUB1SET F7=还原 )GOTO %F5%:MENUA0GOTO CHECK:BACKSET C1=DEL %FileName% 2>NULCLSSET T=clsFOR /F "skip=4 tokens=1 delims=_" %%A in ('%REG%') do (SET /A C1=!C1!+1SET T=%%AECHO !C1!:!T:~4,-4!)>>%FileName%findstr "." %FileName% |moreGOTO LOOP:MENUA1for %%I IN (%NUM%) DO (FOR /F "tokens=2* delims=:" %%A in ('FINDSTR /B "%%I:" %%FileName%%') do (FOR /F "skip=4 tokens=1* delims=_" %%B in ('%QUERY% "%%A"') do (SET /A C2=!C2!+1SET T=%%BSET T2=%%CECHO !C2!:!T:~4,-4!=!T2:~-64!)>>%BKF%ECHO 正在备份 %%A 纸张规格中 ...))GOTO MessageGOTO %F5%:MENUB0GOTO CHECK:ADDIF NOT EXIST %BKF% (CLSECHO.ECHO.ECHO.ECHO 找不到备份档,请将先前制作的备份档放至与本档案同一目录中.ECHO.   注意:DOS 不支援UNC路径ECHO 按任一键离开.PAUSE >NULGOTO BYE)DEL %FileName% 2>NULCLSFOR /F "tokens=1* delims==" %%A in ('FINDSTR "=" %%BKF%%') do ECHO %%A >> %FileName%TYPE %FileName%|MOREGOTO LOOP:MENUB1for %%I IN (%NUM%) DO (FOR /F "tokens=1,2* delims=:,=" %%A in ('FINDSTR /B "%%I:" %BKF%') do (%REREG% "%%B" /D %%C 1>NULECHO 正在还原 %%B 设定值... ))ECHO 快好了,再等一会儿.sc stop Spooler 1>NULsc start Spooler 1>NULGOTO MessageGOTO %F5%:ERRCLS ECHO 编号输入有误,请检查 ECHO  [ %NUM% ]ECHO.ECHO     请按任一键回到列表PAUSE >NULGOTO %F5%:MessageECHO.ECHO     %F7% Done.ECHO     请按任一键回前画面PAUSE>NULGOTO %F5%:LOOPecho    查看编号输入 [M]     离开BPS按[Q]    查看说明按[?]  功能切换[%F3%]ECHO 输入编号原则:1 2 3 4 5 6.....N 各编号中间空一格ECHO [ %F2% ] 纸张设定请输入 [%F3%] 回到另一个选单echo             请输入要[%F7%]的纸张编号:ECHO 状态:[%F7%]set /P NUM=IF "%NUM%"=="?" GOTO HELPIF "%NUM%"=="%F3%" GOTO %F4% IF "%NUM%"=="M" GOTO %F5%IF "%NUM%"=="Q" GOTO BYEfor %%I IN (%NUM%) DO (IF /I %%I LEQ 0 (GOTO ERR ) ELSE (IF /I %%I GTR 10000 (GOTO ERR )))GOTO %F6%:HELPCLSECHO.ECHO===============说   明===============ECHO.ECHO   这是备份印表机伺服器内容里的自订纸张格式小程式ECHO操作方式ECHO程式一开始会先将印表机纸张格式资料带出画面,在每一行的前面有编号,这个ECHO编号就是后续要备份或还原时所需的编号。ECHO切换至 备份/还原 :输入A按ENTER为还原操作介面,输内B为备份操作介面。ECHO画面重读:输入M按ENTER可重新读取编号。ECHO离开:输入Q按ENTER可离开操作介面。ECHO输入编号原则为1 2 3 4 5 6.....N 各编号中间空一格,只能输入小写数字。ECHO.ECHO注意事项ECHO1.建立新的纸张格式时不可包含特殊符号,只能使用空格及A-Z,a-z,0-9,文字.ECHO 2.必需要有登录档的写入权限才可操作.ECHO3.还原时需将备份档%BKF%放到与本档同一个目录.ECHO4.DOS 不支援UNC路径,所以这个档案无法放在网路芳邻上执行.ECHO5.档份档内相同编号只取第一个找到的编号.ECHO6.使用这个档案时需启用CMD.EXE /V 参数ECHO7.要在原有备份档新增新的资料时需在执行这个BAT时加入N+1的数字.ECHO   例:原有60笔应输入BPS.BAT 61 如果没输入参数会造成重複的编号.ECHO作者:Dreamer dreamer@mail.DingerBS.comECHO HTTP://www.DingerBS.com ECHO.ECHO按任一键回到上一个画面......PAUSE >NULGOTO %F5%:BYEFOR %%J IN (F1 F2 F3 F4 F5 F6 F7 F8 T T2 NUM C2 BKF) DO SET %%J=CLSECHO.ECHO.ECHO    Good Bye.

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章