기 타 배치파일 문의드립니다
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 | - | - |
93175 | 윈 도 우| 꼬져님 윈도우에서.. [3] | 센돔타오르 | 489 | 03-27 |
93174 | 소프트웨어| PDF 품질 관련 질문 [2] | asklee | 375 | 03-26 |
93173 | 소프트웨어| 파티션 병합 오류 문의 드립니다 [8] | 이어도 | 460 | 03-26 |
93172 | 기 타| cmd의 chkdsk 명령어와 탐색기 속성의 디스크검사의 차이에... [1] | OOBERecord | 480 | 03-26 |
93171 | 하드웨어| Asus 보드 Secure Boot 해제에 대해,,, [3] | 도파니 | 639 | 03-26 |
93170 | 하드웨어| 바이오스타 바이오스 업데이트... [3] | 도파니 | 704 | 03-26 |
93169 | 기 타| 맥 초보 어린이 질문 드립니다. 외부 부팅이 가능할까요?(... [1] | 주신백곰 | 252 | 03-26 |
93168 | 윈 도 우| 윈도우11 에 한글2010 오피스 2007 설치 가능할까요 [4] | 파도사랑 | 3286 | 03-26 |
» | 기 타| 배치파일 문의드립니다 [12] | 단테9 | 479 | 03-26 |
93166 | 모 바 일| 메세지를 받았는지 안 받았는지 어떻게 확인 가능한지요? [3] | joe | 519 | 03-26 |
93165 | 하드웨어| 2개의 파티션으로 나누어져 있는 UBS 메모리 포맷 [2] | 나는나다 | 512 | 03-26 |
93164 | 윈 도 우| 윈도우10 기본아이콘으로 복원 [3] | 도리도리 | 730 | 03-25 |
93163 | 하드웨어| 파워 문의 [5] | 뷰티블마인 | 353 | 03-25 |
93162 | 기 타| 국민공유기 ASUS TM-AC1900 펌웨어 업데이트 [8] | 가성비연구 | 1179 | 03-25 |
93161 | 윈 도 우| 윈도우 업데이트 문의 드립니다. [8] | 뷰티블마인 | 428 | 03-25 |
93160 | 하드웨어| 메모리 인식 오류 질문 드립니다 [2] | 이어도 | 288 | 03-25 |
93159 | 윈 도 우| 윈도우 변경한 설정 레지스트리 값 확인, 추출 방법? [5] | 마집사 | 430 | 03-25 |
93158 | 윈 도 우| 노트북 바이오스 진입 [4] | 풍웡 | 766 | 03-25 |
93157 | 소프트웨어| Microsoft Edge 제거 문의? [1] | LittleHeav | 525 | 03-25 |
93156 | 윈 도 우| 윈도우pe 관련 문의드립니다. [1] | pinnk | 328 | 03-25 |
저도 잘은 모르지만
예전에 해볼때
동일 폴더에 실행 파일이 있으면
@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
이렇게 하면 되었던 기억이 있습니다.