윈 도 우 프린터 드라이버 자동 설치 배치 파일
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 | - | - | - |
2661 | 기 타| 단추 모양의 전지에 대해 정리해 봅니다. [5] | asklee | 4997 | 7 | 06-28 |
2660 | 하드웨어| 수은 건전지 점검하기 [16] | gooddew | 9066 | 5 | 06-25 |
2659 | 윈 도 우| 127.0.0.1:8080/proxy.pac 때문에 인터넷 연결이 안될 떄 [5] |
|
4644 | 6 | 06-25 |
2658 | 윈 도 우| 윈도우10, 관리자계정으로 설정 창 띄우기 [3] | 크림슨 | 8688 | 4 | 06-22 |
2657 | 소프트웨어| 제어판에 표시되지 않은 설치 프로그램 등록하기. [5] | 구들목 | 4061 | 6 | 06-22 |
2656 | 윈 도 우| 블루투스 메뉴에 파일 보내기 받기 reg [1] | 내찬RB | 4206 | 6 | 06-22 |
2655 | 윈 도 우| 느려진 컴퓨터 빠르게 하는 방법 [15] | gooddew | 14677 | 15 | 06-21 |
2654 | 소프트웨어| Autoruns 사용법 - 시스템 부팅 관리, 시작프로그램 [5] | 그루터기 | 6122 | 10 | 06-20 |
2653 | 윈 도 우| 윈도우10 스파르탄(엣지) 안되는 사이트 강제 사용하기 [6] | 솔트 | 9856 | 5 | 06-11 |
2652 | 윈 도 우| Windows 10 무료 업그레이드 프로모션에 대한 진실 [2] | 프로파간다 | 12533 | 2 | 06-07 |
2651 | 윈 도 우| 윈도우 10 프리뷰 다국어 링크 빨리 따기 [3] | Callisto | 5140 | 3 | 06-06 |
2650 | 서버 / IT| PE를 이용한 윈도우 네트워크 설치 [16] | gooddew | 7992 | 10 | 06-04 |
2649 | 윈 도 우| 바탕화면 아이콘 - 크기와 간격에 관한 강좌 및 프로그램 [8] | ton3d | 4524 | 7 | 06-02 |
2648 | 소프트웨어| PE의 USB를 Y드라이브와 OS드라이브 고정 [2] | 그루터기 | 7104 | 4 | 06-02 |
2647 | 윈 도 우| windows 10 최근항목 끄는 방법 [1] | 안드로이드 | 6460 | 3 | 06-01 |
2646 | 윈 도 우| 윈도우10 디팬더 완전히 끄기 [18] | 슈퍼맨 | 16050 | 12 | 05-30 |
2645 | 윈 도 우| 빌드 10122 엑세스 사용 권한 해결방법 | 서로해 | 3145 | 2 | 05-30 |
2644 | 모 바 일| 스마트폰으로 노래방 만들기-2 [1] | 고양이2 | 4475 | 3 | 05-30 |
2643 | 윈 도 우| 시간(날짜) 수동 변경방법이 달라졌네요. [1] |
|
3159 | 3 | 05-29 |
2642 | 모 바 일| 스마트폰으로 노래방 만들기 [5] | 고양이2 | 5103 | 3 | 05-27 |
제이준님 감사합니다.