윈 도 우 프린터 드라이버 자동 설치 배치 파일
2015.05.08 19:11
안녕하세요.
꽤 오랜 시간이 지나서야 이렇게 두 번째로 인사드립니다.
지난 번 배치 파일의 문제를 어느 정도 개선한 것으로
크게 문제 없이 작동 되는 것으로 판단되어 이렇게 다시 드려 봅니다.
설명이 부실하여 정말 죄송합니다. (__)
@echo off
pushd %~dp0
setlocal enabledelayedexpansion
:main
set o1=
set o2=
set ht=
set ip=
set yn=
set pn=
set mn=
set tl=
cls
echo.
echo.
echo - 네트워크 프린터를 설치합니다 -
echo.
echo.
echo 1. FX DocuCentre-IV 2060
echo.
echo 2. FX DocuCentre-IV 3060
echo.
echo 3. FX DocuCentre-IV 3065
echo.
echo.
echo (해당 키 외를 입력하면 종료합니다)
echo.
echo.
set /p mn=설치하실 프린터를 입력하십시오 [ENTER] :
if "%mn%" == "" goto exit
set /p ip=프린터 IP 주소를 입력하십시오 [ENTER] :
if "%ip%" == "" goto main
set /p ht=추가 머리 문구를 입력하십시오 [ENTER] :
if "%mn%" == "1" set pn=FX DocuCentre-IV 2060 PCL 6
if "%mn%" == "2" set pn=FX DocuCentre-IV 3060 PCL 6
if "%mn%" == "3" set pn=FX DocuCentre-IV 3065 PCL 6
환경변수 'pn'은 드라이버 폴더 내 FX6SGAL.inf 파일 안에서
[FXIDPF]
"FX DocuCentre-IV 2060 PCL 6" = DC_2060_PCL,USBPRINT\FUJI_XEROXDocuCentreD8F9
"FX DocuCentre-IV 2060 PCL 6" = DC_2060_PCL,WSDPRINT\FUJI_XEROXDocuCentreD8F9
따옴표 빨간색을 적어 주시면 됩니다.
for /F "tokens=1,2,3" %%f in ("%pn%") do set p1=%%f&set p2=%%g&set p3=%%h
if "%ht%" == "" (
set tl=%p1% DC-IV %p3%
) else (
set tl=%ht% %p1% DC-IV %p3%
)
이 부분은 하나의 드라이버에 이름이 다른 프린터명을 위한 부분인데요.
'pn' 값의 공백을 기준으로 "tokens=1,2,3" 즉, 앞에서 1~3 번째 문자만 변수 지정하라는 뜻입니다.
그러니, 'p1' 변수는 'FX', 'p2' 변수는 'DocuCentre-IV', 'p3' 변수는 '2060'이겠죠.
for /F "tokens=3" %%a in ('ver') do set o1=%%a
if not "%o1%" == "XP" for /F "tokens=1" %%b in ('echo %processor_architecture%') do set o1=%%b
이 부분은 윈도우 버전을 구분하기 위한 루틴인데요.
윈도우 XP가 아니라면, %processor_architecture% 환경변수 값을 불러 옵니다.
if "%o1%" == "AMD64" (
set pp=%cd%\FX\DC-IV 2060,3060,3065\x64\FX6SGAL.inf
set o2=Vista/7/8 64bit
) else (
set pp=%cd%\FX\DC-IV 2060,3060,3065\FX6SGAL.inf
set o2=Vista/7/8 32bit
)
if "%o1%" == "XP" set o2=XP 32bit
어차피, 윈도XP나 윈도7 32비트는 같은 드라이버를 쓰기 때문에 64비트만 구분하면 되겠죠.
처음에는 'Program Files(x86)', '%SYSWOW64%'로 구분했는데요.
이 것이 완전히 구분을 못 하더라구요.
특히, '%SYSWOW64%'는 32비트에도 존재하여 문제가 발생되더라구요.
'Program Files(x86)' 폴더는 왠지 찜찜하고...
cls
echo.
echo.
echo.
echo 프 린 터 : %pn%
echo 아 이 피 : %ip%
echo 프린터명 : %tl%
echo 프로토콜 : LPR
echo 운영체제 : Windows %o2%
echo.
echo.
echo [ENTER] SNMP사용 : 해제
echo [1] SNMP사용 : 활성
echo.
set /p yn=프린터를 설치합니다 :
if "%yn%" == "1" goto FTask
if not "%yn%" == "" goto main
'SNMP사용' 여부로 드라이버를 구분하여 설치하도록 만들었는데요.
이는 토너 준비/부족 메시지로 인해 민원 출력이 안되는 문제 때문입니다.
해제를 하면 아시다싶이 토너량 정보를 가져 오지 못하고 정상으로 인식해서 민원 출력에 문제 없죠.
:FTask
echo.
echo.
echo.
echo 프린터 포트 추가 및 프린터 설치 명령을 수행합니다.
echo.
if "%yn%" == "1" (
cscript //Nologo "%cd%\VBS\prnport.vbs" -a -r %ip% -h %ip% -o lpr -2e -q lp -me -y public -i 1
) else (
cscript //Nologo "%cd%\VBS\prnport.vbs" -a -r %ip% -h %ip% -o lpr -2e -q lp -md -y public -i 1
)
이 부분이 포트를 추가하는 것인데요.
-me : SNMP사용 - Enable
-md : SNMP사용 - Disable....입니다.
prnport.vbs 파일은 윈도7 32비트를 USB 직접 링크를 걸어서 사용합니다.
저 파일이 해당 PC에 없는 경우를 위한 대비책이예요.
rundll32 printui.dll,PrintUIEntry /if /b "%tl%" /f "%pp%" /r "%ip%" /m "%pn%"
이 부분이 해당 포트에 드라이버를 설치하는 부분입니다.
echo.
echo.
rundll32 printui.dll,PrintUIEntry /p /n "%tl%"
이 부분은 설치한 프린터 속성 창을 표시하라는 명령입니다.
복합기의 경우, '프린터 정보 가져오기'를 해야 되니까요.
:exit
소스는 첨부했습니다.
조금만 응용하시면 하나의 배치 파일로 여러 개의 다른 이름을 가진 프린터를 설치할 수 있으실 거예요.
이 소소를 간소화하여 'INNO SETUP'과 결합하시면 원하시는 단일 파일을 만들 수 있을 겁니다.
감사합니다~~~~~~~~
댓글 [6]
-
cungice 2015.05.08 21:32
-
현규 2015.05.08 22:08
기억이 가물가물해서, 확실하지는 않은데요...%processor_architecture% 로 O/S bit를 판단할 수 없을 수도 있어요...
저의 기억으로는,
64bit CPU에 32 bit Windows 설치해도 %processor_architecture% 는 AMD64.((확인 필수!!!))
그래서 저는 아래와 같이 씁니다. (저도 솔직이 맘에 안들고, 찜찜하지만... 더 확실한, 다른 것을 찾지 못함.)
if "%ProgramFiles(x86)%" NEQ "C:\Program Files (x86)" (
os_bit=32
) else (
os_bit=64
)
-
제이준 2015.05.08 22:32
제 심정으로는 레지스트리에서 빼내 오고 싶은데 말이죠.
-
현규 2015.05.08 22:50
검색을 해보니... 여러 이야기들이 오가지만... 사실 그다지 믿을만하지 않아보여요.
대부분 CPU Architecture 를 얻어오는 것이지 O/S(Windows) bit이 아니더라는...
오히려 %ProgramFiles(x86)% 환경변수를 이야기 하는 비율이 대략 40%를 넘더군요(나머지는 수 많은 방법)...
...
케플님은 오히려 심플하게 SysWOW64. So Cool?
if exist %windir%\SysWOW64 (
set WinBit=64
) else (
set WinBit=32
)...
reg에서 긁어오는 방법은, 아래의 글 참조...(별로 미덥지 않음)
즉, O/S 가 32 bit 인지 64 bit 인지 알려주는 정확한 키/값을 찾으면 가능은 한데...그게 뭔지 모르겠네요...ㅠㅠ
((환경변수와 별 차이 없고,,, 대부분 CPU 종류임.))
64 bit - Detect Windows Server version 32/64-bit in CLI - Super User
...
echo PROCESSOR_ARCHITECTURE var: echo %PROCESSOR_ARCHITECTURE% | find /i "x86" > nul if %errorlevel%==0 ( echo 32-bit ) else ( echo 64-bit ) echo. echo PROCESSOR_ARCHITECTURE reg: reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE | find /i "x86" > nul if %errorlevel%==0 ( echo 32-bit ) else ( echo 64-bit ) echo. echo CentralProcessor reg: reg query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > nul if %errorlevel%==0 ( echo 32-bit ) else ( echo 64-bit ) echo. echo ProgramFiles(x86) var: if not defined ProgramFiles(x86) ( echo 32-bit ) else ( echo 64-bit ) echo. echo ProgramFiles(x86) dir: if not exist "%systemdrive%\Program Files (x86)" ( echo 32-bit ) else ( echo 64-bit ) echo.
-
홍은동초짜 2015.05.09 10:06
제이준님^^ 멋진 자료 제작 공유해주셔서 넘 고맙습니다...
사용법은 동일폴더내에 프린터 드라이브와 배치파일을 같이 두고 배치파일만 실행하면 되는지요??
좀 자세히 설명 좀 부탁드립니다...꾸벅~~죄송합니다^^
그럼, 가족과 함께 즐거운 주말되세요~~
-
제이준 2015.05.10 10:42
set pp=%cd%\FX\DC-IV 2060,3060,3065\FX6SGAL.inf
%cd% 변수는 현재 실행된 배치파일 경로를 의미합니다.
그러니, 본 cmd 파일 위치에 FX 서브 폴더가 있으면 되겠죠.cscript //Nologo "%cd%\VBS\prnport.vbs" -a -r %ip% -h %ip% -o lpr -2e -q lp -me -y public -i 1
이 부분도 prnport.vbs 파일 위치는 본 cmd 파일 위치에 VBS 서브 폴더로 존재하면 됩니다.
입맛 따라 바꾸세요.
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
2643 | 윈 도 우| 시간(날짜) 수동 변경방법이 달라졌네요. [1] |
|
3159 | 3 | 05-29 |
2642 | 모 바 일| 스마트폰으로 노래방 만들기 [5] | 고양이2 | 5103 | 3 | 05-27 |
2641 | 윈 도 우| [해결] Windows10 설치후 Skydigital 수신카드 드라이버 [3] | Razer | 5387 | 2 | 05-26 |
2640 | 윈 도 우| 윈도우10 에어로 효과가 안될때...(레지첨부) [1] | 그린티 | 5107 | 1 | 05-25 |
2639 | 윈 도 우| win10 팀색기 폴더 없애기 [10] | 희망성사 | 6597 | 4 | 05-23 |
2638 | 하드웨어| 2014년 LG 모니터 모델 이름 규칙 [2] | 폭행몬스터 | 8032 | 5 | 05-18 |
2637 | 윈 도 우| 부팅시 CHKDSK 가 무한 반복 될때 [2] | DOS | 6260 | 6 | 05-16 |
2636 | 윈 도 우| 윈도우8.1 업데이트 후 블랙 스크린 - 해결 방법 중 한가지.. [5] | bangkok_시민 | 6367 | 2 | 05-16 |
2635 | 윈 도 우| 완전 삭제메뉴 등록하기 [2] | ton3d | 4503 | 2 | 05-14 |
2634 | 윈 도 우| 스윙브라우즈 포터블 만들기 2.1 버전 / swing-browser 무... | 심씨 | 6412 | 2 | 05-10 |
2633 | 윈 도 우| 확장자별 우클릭 메뉴 [1] | ton3d | 5289 | 2 | 05-09 |
» | 윈 도 우| 프린터 드라이버 자동 설치 배치 파일 [6] | 제이준 | 7307 | 3 | 05-08 |
2631 | 윈 도 우| 확장자별 연결프로그램 강제지정(본론) [4] | ton3d | 5357 | 3 | 05-07 |
2630 | 윈 도 우| 확장자별 연결프로그램 강제지정(서론) | ton3d | 3351 | 1 | 05-07 |
2629 | 윈 도 우| [완결] NTFS Permission eraser 스크립트 [7] | 빛과그림자 | 4428 | 6 | 05-04 |
2628 | 윈 도 우| Win8PE_VHD 부팅 관련, 아래 글에 간단히 내용을 추가합니다. [4] | sokury | 4713 | 3 | 05-03 |
2627 | 윈 도 우| UEFI 모드 Win8.1, Win10, DreamPE(Win8PE)를 VHD 멀티 구성 [26] | sokury | 10833 | 7 | 05-03 |
2626 | 윈 도 우| 통합 이미지의 WIMBOOT 제작 설치 용량 줄이기방법 [4] | 보[boram]람 | 4970 | 1 | 05-02 |
2625 | 윈 도 우| 윈도우10 프리뷰 WIMBoot 간단히 설치하기 [7] | FLP386 | 6050 | 3 | 05-01 |
2624 | 윈 도 우| 윈도우 10 프리뷰 빌드 링크따기 | Callisto | 4287 | 1 | 04-29 |
제이준님 감사합니다.