기 타 배치파일 문의드립니다
2022.03.26 09:52
sdio 드라이버팩을 자동으로 찾아서 실행해주는 배치파일을 한번 만들어 봤는데요
배치파일을 따로 공부한적이 없어서 여기저기 자료에서 짜집기로 만들었는데 실행이 안되서 문의드립니다
그저께 글을 올려서 지후*님의 답변으로 시도를 해봤는데 실행은 되지만 드라이버가 설치가 안되고 그냥 닫혀버리네요
드라이버팩 실행파일의 한계인건지... 아님 배치파일을 다르게 구현을 해야하는지 잘 모르겠어서 도움을 부탁드립니다
실행파일명은 SDIO_R742.exe SDIO_x64_R742.exe 이렇게 비트에 따른 두가지로 드라이버팩 버전이 파일명 뒷부분에 들어가 있는 형태로
제가 짜집기로 아래처럼 만든거로 콘솔을 보면 SDIO_x64R*.exe 이렇게 뜨면서 파일을 찾을 수 없다고 뜨더군요
echo.
set option=-autoinstall -autoclose -license
:CheckOS
IF %PROCESSOR_ARCHITECTURE% == x86 (IF NOT DEFINED PROCESSOR_ARCHITEW6432 goto bit32)
goto bit64
:bit32
set xOS=R
goto run
:bit64
set xOS=x64_R
goto run
:run
for %%A in ( Z Y X W V U T S R Q P O N M L K J I H G F E D C B A ) do (
for /f "tokens=*" %%B in ( '"dir /a:d /b %%A:\SDI* 2>nul"' ) do ( set "SDIpath=%%A:\%%B" )
)
if not defined SDIpath ( exit )
call "%SDIpath%\SDIO_%xOS%*.exe" %option%
exit
@echo offset "xOS=x64_R" & if %PROCESSOR_ARCHITECTURE%==x86 (if not defined PROCESSOR_ARCHITEW6432 set "xOS=R")for %%A in (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) do (for /f "tokens=*" %%B in ('"dir /a:d /b %%A:\SDI* 2>nul"') do (if exist "%%A:\%%B" set "SDIpath=%%A:\%%B"))if defined SDIpath for %%C in ("%SDIpath%\SDIO_%xOS%*.exe") do call "%%C" -autoinstall -autoclose -licensepause & exit /b
댓글 [12]
-
집앞의_큰나무 2022.03.26 10:59
-
단테9 2022.03.27 12:31
답변 감사드립니다
-
슈머슈마 2022.03.26 12:15
코드 작성 부분 마지막 명령줄 -license 이부분이 없는거 같습니다.
아래의 명령줄 작업-안내 를 보시면 -license 이 없는걸 볼수가 있습니다.
명령줄 작성시 없는 명령을 추가할때 오류가 날수 있습니다.
-------------
작업-안내
-------------
-? 도움말 창 표시
-7z 7z 아카이버 모드에서 실행
보기: SDI.exe -7z x DP_TV_Beholder_14020.7z
-install <hwid> <inffile>
<inffile>에서 지정된 <hwid>로 드라이버 설치
종료 코드:
1 - 성공적으로 설치되었습니다.
0x80000001 - 성공적으로 설치되었습니다(재부팅 필요).
Other - 오류
-HWIDInstalled:<hwid>=<file>
<file> 세션에 <hwid> 드라이버가 설치되었는지 확인
종료 코드:
0 <file>에 저장된 세션에 드라이버가 설치되지 않았습니다.
1 드라이버가 <file>에 저장된 세션에 설치되었습니다.
24 길이가 잘못되었습니다. HWID는 17자 미만입니다.
-save-installed-id[:<file>] 설치된 드라이버의 하드웨어 ID를 파일에 저장
<file>을 지정하지 않으면 %temp%\SDI2\InstalledID.txt에 저장
-PATH <pathToDrivers> DPInst 대신 실행
종료 코드에 대해서는, DPInst 의 메뉴얼을 참조해 주세요.
-delextrainfs 추출후 사용되지 않는 inf 삭제
-verbose:<flags> 로그 상세 레벨 설정
-ls:<file> 스냅샷 불러오기
-nogui GUI 인터페이스 없이 실행
-nologfile 로그 만들기 억제
-nosnapshot 스냅샷 만들기 억제
-nostamp 타임스탬프 없이 로그와 스냅샷 만들기
-getdevicelist:<file>
모든 장치 및 드라이버의 세부 정보가 포함된 텍스트 파일 작성
------------
sdi.cfg
------------
-drp_dir:<dir> 드라이버팩 경로
-index_dir:<dir> 인덱스 경로
-output_dir:<dir> 읽을 수 있는 형식의 인덱스 경로
-data_dir:<dir> 번역 및 테마 경로
-log_dir:<dir> 로그 및 스냅샷 경로
-lang:<name> 인터페이스 언어
-theme:<name> 현재 테마
-hintdelay:<time> 힌트 지연 설정
-scale:<size> GUI에 대한 스케일링 설정 (일반 크기: 256)
-wndwx:<num> 창 너비 설정
-wndwy:<num> 창 높이 설정
-wndsc:<num> 창 표시 명령 설정 (1=보통 표시, 2=최소화, 3=최대화)
-filters:<flags> 필터 설정
-expertmode 전문가 모드 활성화
-norestorepnt 복원 지점 만들기 억제
-nostop 복원 지점이 실패해도 중지하지 않기
-novirusalerts 바이러스 경고 억제
-showdrpnames1 오른쪽에 드라이버팩 이름 표시
-showdrpnames2 위의 드라이버팩 이름 표시
-oldstyle 이전 스타일을 사용하여 드라이버 목록 표시
-preservecfg sdi.cfg의 업데이트 방지
-hidepatreon Patreon 버튼 숨김
-cfg:<FileName> "sdi.cfg" 대신 <file> 불러오기
-------
토런트
-------
-checkupdates 온라인 업데이트 확인
-onlyupdates 누락된 드라이버팩 알림 비활성화
-autoupdate 자동으로 다운로드 시작
-port:<num> 토렌트 클라이언트용 포트
-downlimit:<num> 다운로드 속도 제한(KB) 설정
-uplimit:<num> 업로드 속도 제한(KB) 설정
-connections:<num> 최대 연결 수 설정
-finish_upd_cmd:<cmd> 다운로드 완료시 실행되는 명령 지정
-autoclose 다운로드 후 프로그램 닫기
-activetorrent:<num> 업데이트 토렌트를 선택합니다. 값이 1이면
일반 SDI 업데이트 토렌트가 선택되고 값이 2이면
더 자주 업데이트되는 드라이버 팩 업데이트 토렌트가 선택됩니다.
---------
에뮬레이션
---------
-a:32 32비트 Windows 에뮬레이트
-a:64 64비트 Windows 에뮬레이트
-v:<version> 특정 버전의 Windows 에뮬레이트
예를 들어, Windows Vista를 에뮬레이트하려면 -v:60을 사용
-----------
자동설치
-----------
-autoinstall 즉시 드라이버 설치 시작
-autoclose 설치 후 프로그램 닫기
-finish_cmd:<cmd> 드라이버 설치 완료시 실행되는 명령 지정
-finishrb_cmd:<cmd> 재부팅이 필요한 경우 드라이버 설치 완료시 실행되는 명령 지정
-extractdir:<dir> TEMP에 대한 경로
-keepunpackedindex 압축을 푼 드라이버에 대한 인덱스 업데이트 방지
-keeptempfiles 임시 파일 보관
-----
디버그
-----
-showconsole 콘솔창 표시
-failsafe WINDOWS\inf의 인덱싱 비활성화
-disableinstall 드라이버 설치 및 복원지점 생성 억제
-reindex 모든 드라이버 팩을 강제로 다시 인덱싱
-index_hr 읽을수 있는 형식으로 인덱스 만들기
-------
로그 설정
-------
The -verbose:<flags> 스위치는 로그 세부 수준을 설정하는 데 사용됩니다.
예를 들어 DeviceInfo 및 manager_print 섹션만 기록하려면 합계를 4+16=20으로 계산해야 합니다.
SDI.exe -verbose:20
LOG_VERBOSE_ARGS | 0x0001 | 1 | Sections: "Settings".
LOG_VERBOSE_SYSINFO | 0x0002 | 2 | Sections: "Windows", "Environment".
LOG_VERBOSE_DEVICES | 0x0004 | 4 | Sections: "DeviceInfo".
LOG_VERBOSE_MATCHER | 0x0008 | 8 | Sections: "{matcher_print".
LOG_VERBOSE_MANAGER | 0x0010 | 16 | Sections: "{manager_print".
LOG_VERBOSE_DRP | 0x0020 | 32 | Sections: "Driverpacks".
LOG_VERBOSE_TIMES | 0x0040 | 64 | Sections: "Times".
LOG_VERBOSE_LOG_ERR | 0x0080 | 128 | Error messages.
LOG_VERBOSE_LOG_CON | 0x0100 | 256 | Misc messages.
LOG_VERBOSE_LAGCOUNTER | 0x0200 | 512 | GUI lag counter.
LOG_VERBOSE_DEVSYNC | 0x0400 | 1024 | Sections: "{Updated".
LOG_VERBOSE_BATCH | 0x0800 | 2048 | Batch processing of snapshots.
LOG_VERBOSE_DEBUG | 0x1000 | 4096 | Debug output.
LOG_VERBOSE_TORRENT | 0x2000 | 8196 | Torrent output
-
슈머슈마 2022.03.26 12:18
지후빠님 코드 확인하였음. 그리고 C드라이브 아닌곳에서 실행하면 됩니다.
@echo off
if "%PROCESSOR_ARCHITECTURE%"=="x86" (set bit=x86) else (set bit=x64)
for %%A in (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) do (
for /f "tokens=*" %%B in ('"dir /a:d /b %%A:\SDI* 2>nul"') do (if exist "%%A:\%%B" set "SDIpath=%%A:\%%B"))
if defined SDIpath for %%C in ("%SDIpath%\SDI_%bit%*.exe") do call "%%C" -autoinstall -autoclose
pause & exit /b
실행 파일 명은 SDI_x86_(버전명).exe, SDI_x64_(버전명).exe
SDI_x64_<== 파일이름은 이부분까지가 중요 뒤에는 아무거나.exe
-
지후빠 2022.03.26 14:23
수고하셨습니다. OS 비트 채크하는 부분은 다음 링크를 참고해 보십시오. ^^
https://docs.microsoft.com/en-us/archive/blogs/david.wang/howto-detect-process-bitness
요약하면 PROCESSOR_ARCHITECTURE 가 x86 이고 PROCESSOR_ARCHITEW6432 가 정의되어 있지 않으면 32비트입니다.
예를 들면, 64비트 WOW64의 cmd.exe 는 PROCESSOR_ARCHITECTURE 가 x86 이고 PROCESSOR_ARCHITEW6432 는 AMD64 또는 IA64 입니다.
일반적으로 cmd를 직접 실행할 때는 문제되지 않는데 만약 32비트 유틸(오토핫키 등)에서 batch 파일을 호출하면 OS가 64비트이더라도 WOW64에 있는 32비트 cmd.exe가 실행되면서 환경변수 또한 PROCESSOR_ARCHITECTURE 가 AMD64 또는 IA64가 아닌 x86으로 나타납니다. 32비트로 오인하게 될 수 있습니다.
좀 더 확실한 방법은 위 링크 댓글 마지막쯤에 있는 wmic OS Get OSArchitecture 또는 wmic cpu get AddressWidth /value 결과인데 살짝 느리고, wmic가 없는 PE에서 사용할 수 없다는 단점이 있습니다.
@echo off
for /f "skip=1 tokens=*" %%a in ('wmic OS Get OSArchitecture') do set bit=%%a&call set bit=%%bit:~0,2%%&goto next
:next
echo %bit% 비트
pause
@echo off
for /f "tokens=2 delims==" %%a in ('wmic cpu get AddressWidth ^/value') do set bit=%%a
echo %bit% 비트
pause
-
슈머슈마 2022.03.26 14:42
감사합니다. 확인해서 잘 참고 하겠습니다.
-
단테9 2022.03.27 12:33
답변 감사드립니다
이상하게 저의 경우 드라이버가 설치가 안되고 바로 종료되어 버립니다
그냥 단순하게 배치파일에 직접 파일명 주고 옵션주고 실행하면 문제없이 잘 진행이 됩니다
-
지후빠 2022.03.27 12:35
옵션 -license 삭제하고 -autoinstall -autoclose 만 주고 실행보셨을까요?
-
단테9 2022.03.27 12:42
네 그렇게 해도 마찬가지네요 뭐가 문제인지 모르겠습니다 관리자권한 실행도 다 해봤는데...
-
지후빠 2022.03.27 13:16
위 코드에서 call "%%C" -autoinstall -autoclose -license 를
start "%%C" -autoinstall -autoclose 로 바꿔서 테스트해보시겠습니까?
잘 안되시면 위쪽 sooma님 댓글을 참고해보십시오. 작동한다고 하시니...
-
무월 2022.03.27 19:29
Snappy 드라이버는 외부 경로에서 호출시 에러가 발생하므로 . . .
폴더 경로에 있는 SDI_auto.bat을 실행해 주시면 됩니다.
----------------------------------------------------------------------------------------------------------------------------
:Snappy
pushd %~dp0
for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) do if exist %%i:\Snappy %%i:"\Snappy\SDI_auto.bat"
exit
----------------------------------------------------------------------------------------------------------------------------
설치 옵션은 sdi.cfg에 정의 해주세요.
-
단테9 2022.03.27 23:10
자세한 답변 감사드립니다 해보고 혹시라도 문제가 생기면 다시 문의 드리겠습니다 정말 다시한번 감사드립니다
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
93430 | 소프트웨어| Image for Windows 백업 시 PHY 잠금이 설치 및 활성화 되... [5] | hwangsan | 601 | 04-21 |
93429 | 윈 도 우| 윈도우11 22000.613 업데이트 후 이상동작 [4] | OOBERecord | 509 | 04-21 |
93428 | 윈 도 우| 윈도우11 인사이더 사용중 정식버전 돌아가려면 어떻게 하... [8] | 투명스티커 | 461 | 04-20 |
93427 | 소프트웨어| 파일 용량으로 검색 가능한 탐색기 있나요? [7] | 이진 | 422 | 04-20 |
93426 | 윈 도 우| VHD에 관한질문su*님께 드립니다. [4] | 거스 | 334 | 04-20 |
93425 | 하드웨어| SAS 케이블관련 질문입니다 [4] | 한아름 | 379 | 04-20 |
93424 | 모 바 일| 공폰 싸게 파는데 알고싶습니다. [5] | 씨케이 | 788 | 04-20 |
93423 | 기 타| 핸폰 입출금 알림서비스 [2] | 홍낄똥 | 587 | 04-20 |
93422 | 하드웨어| 컴퓨터용 6구 콘센트 안전하고 튼튼한 것으로 추천 부탁드... [10] | toto | 702 | 04-20 |
93421 | 기 타| 파일명을 일괄 바꾸는 방법을 알고싶습니다. [7] | 죠 | 877 | 04-20 |
93420 | 기 타| 노트북 액정 깨져서 안나올때, 외부 모니터로 연결해서 보... [8] | 87600h | 1061 | 04-20 |
93419 | 기 타| 컴퓨터 기본적인 구조 관련해서 책 추천 [3] | 일신우일신 | 396 | 04-19 |
93418 | 윈 도 우| 폴더 안에 있는 파일의 이름을 바꾸면 자동으로 정렬이 되... [2] | arumiu | 515 | 04-19 |
93417 | 윈 도 우| 카카오톡 에러 문의 [2] | ojaykim | 445 | 04-19 |
93416 | 소프트웨어| 웹체크 검사 [5] | 홍낄똥 | 431 | 04-19 |
93415 | 기 타| 택시 뒷범퍼 설치물 질문요! [5] | 이상무 | 452 | 04-19 |
93414 | 소프트웨어| 윈도우 PE 관련 문의 [3] | Com_jb | 563 | 04-19 |
93413 | 기 타| 네이버 페이 [3] | 홍낄똥 | 507 | 04-19 |
93412 | 소프트웨어| OS 복구 기능(프로그램) 비교 질문입니다. [4] | 블레이더영 | 643 | 04-19 |
93411 | 윈 도 우| 윈도우에서 삼성노트를 불러서 작성한후 프린터는 안되는건... [3] | joe | 423 | 04-19 |
저도 잘은 모르지만
예전에 해볼때
동일 폴더에 실행 파일이 있으면
@echo off
Color 1F
pushd %~dp0
title=Start Snappy Driver Installer
if /i "%PROCESSOR_ARCHITECTURE%"=="x86" (set ARCH=x86) else (set ARCH=x64)
if "%ARCH%"=="x86" goto :32bit
if "%ARCH%"=="x64" goto :64bit
:32bit
echo 32-bit
set xOS="R"
goto cont
:64bit
echo 64-bit
set xOS="x64_R"
:cont
for /f "tokens=*" %%a in ('dir /b /od "%~dp0SDI_%xOS%*.exe"') do set "SDIEXE=%%a"
if exist "%~dp0%SDIEXE%" (
start "Snappy Driver Installer" /d"%~dp0" "%~dp0%SDIEXE%" -Autoinstall -Autoclose
exit
) else (
echo.
echo Not found 'Snappy Driver Installer'!
echo.
timeout 6
exit
)
:ex
이렇게 하면 되었던 기억이 있습니다.