반응형

자동 탭에서 일부 USB 드라이브가 정상적으로 검색되지 않는 문제가 제보되어, 오토잇 스크립트 구문을 개선하였습니다.

Choose Installation File v3.5.zip
1.69MB

 

https://noways.tistory.com/2071

 

윈도우 설치 파일 선택기 v3.0 - 기능 통합(완료)

윈도우 설치 파일 선택기 v3.0  - v1.0과 v2.0의 기능을 통합하고, 탭으로 분리하여 v3.0으로 개선하였습니다.  - v2.0에서 지원하지 않았던 ESD 확장자를 v3.0에서 지원하도록 개선하였

noways.tistory.com

 

Func SearchFiles()
    ; ListView 초기화 (기존 항목 삭제)
    GUICtrlDelete($listview)
    $listview = GUICtrlCreateListView("File Path|Size (GB)", 20, 120, 620, 240, $LVS_REPORT)
    GUICtrlSendMsg($listview, 4126, 0, 520) ; Set width for 'File Path'
    GUICtrlSendMsg($listview, 4126, 1, 70) ; Set width for 'Size (GB)'
    
    Local $iDepth = Number(GUICtrlRead($spnDepth))
    If $iDepth < 0 Then $iDepth = 0

    ; 고정 드라이브 검색 (HDD, SSD)
    Local $aDrives = DriveGetDrive("FIXED")
    If Not @error Then
        For $i = 1 To $aDrives[0]
            ScanDirectories($aDrives[$i], $iDepth)
        Next
    EndIf

    ; USB 드라이브 검색 (REMOVABLE)
    Local $aUsbDrives = DriveGetDrive("REMOVABLE")
    If Not @error Then
        For $i = 1 To $aUsbDrives[0]
            ScanDirectories($aUsbDrives[$i], $iDepth)
        Next
    EndIf

    ; CD-ROM 드라이브 검색
    Local $aCdDrives = DriveGetDrive("CDROM")
    If Not @error Then
        For $i = 1 To $aCdDrives[0]
            ScanDirectories($aCdDrives[$i], $iDepth)
        Next
    EndIf
EndFunc

Func ScanDirectories($sPath, $iDepth, $iCurrentDepth = 0)
    If $iCurrentDepth > $iDepth Then Return

    If StringRight($sPath, 1) <> "\" Then $sPath &= "\"

    Local $aExtensions = ["*.iso", "*.wim", "*.esd"]
    For $ext In $aExtensions
        Local $aFiles = _FileListToArray($sPath, $ext, $FLTA_FILES)
        If Not @error Then
            For $i = 1 To $aFiles[0]
                Local $sFilePath = $sPath & $aFiles[$i]
                Local $iFileSize = FileGetSize($sFilePath) / (1024 * 1024 * 1024)
                GUICtrlCreateListViewItem($sFilePath & "|" & Round($iFileSize, 2), $listview)
            Next
        EndIf
    Next

    If $iCurrentDepth < $iDepth Then
        Local $aDirs = _FileListToArray($sPath, "*", $FLTA_FOLDERS)
        If Not @error Then
            For $i = 1 To $aDirs[0]
                If $aDirs[$i] <> "." And $aDirs[$i] <> ".." Then
                    ScanDirectories($sPath & $aDirs[$i], $iDepth, $iCurrentDepth + 1)
                EndIf
            Next
        EndIf
    EndIf
EndFunc

 

 

 

개선된 스크립트를 적용한 후, USB 드라이브 검색 목록이 정상적으로 출력되는 것을 확인하였습니다.

 

 

수동 탭 검색의 경우 드라이브 루트 경로의 1단계 폴더만 검색하는 방식이므로 기존과 동일하게 정상 동작합니다.

└▶ 드라이브 루트 경로의 지정된(검색할 폴더) 폴더 깊이 1단계만 검색 합니다.

 

 

└▶ 아래와 같은 패턴으로 사용 가능 합니다.

 

■ 동영상 제목 클릭 후 전체화면(1080P)시청 가능합니다.

 

정보가 도움이 되었다면 아래 링크로 커피를 후원 해주세요. ^^

donaricano-btn

반응형

+ Recent posts