기 타 배치파일 문의드립니다
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 | - | - |
93394 | 윈 도 우| 우클릭 메뉴에 멀티부팅 메뉴 선택이 가능할까요? [6] | 레드2 | 678 | 04-17 |
93393 | 윈 도 우| 엣지창 최대화 | 달그림 | 316 | 04-17 |
93392 | 윈 도 우| 토탈 커맨더와 Everything 연동할려면 어떻게 설정을 해야... [4] | 슈머슈마 | 522 | 04-17 |
93391 | 모 바 일| 이번에 나온 S22+는 화면이 S21+보다 좀 많이 밝은지요? [1] | joe | 359 | 04-17 |
93390 | 하드웨어| 조이콘 pc연결(블루투스가 안잡혀요) [6] | 라나빽 | 763 | 04-17 |
93389 | 윈 도 우| microsoft windows 전화걸기 끄는 방법 [1] | 삼다수 | 664 | 04-16 |
93388 | 윈 도 우| 윈10 홈버전에서 게스트 계정삭제 방법 문의드려요 [2] | 『ⓖⓤⓝ』 | 328 | 04-16 |
93387 | 소프트웨어| 웨일 브라우저 쓰시는 분들께 문의. [1] | 윈도면도 | 338 | 04-16 |
93386 | 하드웨어| 나스 관련 문의드립니다 [11] | 단테9 | 569 | 04-16 |
93385 | 기 타| 우회전 WindowexeGoodbyeDPI 문제네요 해결해 주세요. [6] | 토니™짱야 | 582 | 04-16 |
93384 | 소프트웨어| Kigo Netflix Video Downloader [2] | 홍낄똥 | 284 | 04-16 |
93383 | 윈 도 우| 시작메뉴, 관리자권한 [2] | 안다리엘 | 288 | 04-16 |
93382 | 윈 도 우| 탐색기에서 마우스 가운데 버튼 스크롤 아시는분 계신가요~ [3] | 브래드피클 | 395 | 04-16 |
93381 | 윈 도 우| 구형 그래픽카드(HD6850)가 작업관리자에 안뜹니다. [5] | 『ⓖⓤⓝ』 | 398 | 04-16 |
93380 | 윈 도 우| Uac 활성화 상태에서 다운로시 | 슈머슈마 | 228 | 04-15 |
93379 | 소프트웨어| 크롬에서 동기화가 매번 중단됩니다 | none | 127 | 04-15 |
93378 | 기 타| 웹서핑중 파일이 다운 되어 있는데요 뭐죠?? [3] | 버들도령 | 496 | 04-15 |
93377 | 윈 도 우| 인텔 ( 사용자 지정 해상도 ) 설정 할수 있는 드라이버 버... [1] | 주신백곰 | 334 | 04-15 |
93376 | 윈 도 우| 기본앱 변경 레지스트리 고수님들 봐주세요ㅠㅠ [1] | yooohwoo | 338 | 04-15 |
93375 | 윈 도 우| 혹시 맥관련 질문도 받나요? [3] | BSD | 216 | 04-15 |
저도 잘은 모르지만
예전에 해볼때
동일 폴더에 실행 파일이 있으면
@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
이렇게 하면 되었던 기억이 있습니다.