» GetSize: получаем размер файлов и директорий

K.A.V.
www.oszone.net
22.02.2010
Автор: K.A.V.
Последнее обновление: 01.09.2011

Для выполнения команды необходимо:
!include "FileFunc.nsh"
${GetSize}

Команда "GetSize" позволяет получить:

${GetSize} "[Путь]" "[Параметры]" $var1 $var2 $var3

"[Путь]"      ; Диск или директория
              ;
"[Параметры]" ; /M=[маска]
              ;     /M=*.*         - поиск всех файлов (по-умолчанию)
              ;     /M=*.doc       - Поиск Work.doc, 1.doc ...
              ;     /M=Pho*        - Искать файлы в именах которых есть "Pho" (PHOTOS, phone.txt ...)
              ;     /M=win???.exe  - Поиск в имени "win" с 3 символами далее, только EXE (winamp.exe, winver.exe ...)
              ;     /M=winamp.exe  - Поиск только winamp.exe
              ; /S=No:No[B|K|M|G]
              ;     /S=      - Не определять размер файла (быстрее) (по-умолчанию)
              ;     /S=0:0B  - Найти файлы размер которых ровно 0 байтов
              ;     /S=5:9K  - Найти файлы от 5 до 9 Килобайт
              ;     /S=:10M  - Найти файлы размером 10 Мегабайт и меньше
              ;     /S=1G    - Найти файлы от 1 Гигабайта и более
              ; /G=[1|0]
              ;     /G=1     - Искать в поддиректориях (по-умолчанию)
              ;     /G=0     - Не искать в подкаталогах
              ;
$var1         ; Результат: Размер файла
$var2         ; Результат: Количество файлов
$var3         ; Результат: Количество директорий

1. Определение размера файла
Section
    ; Определение размера файла "C:\WINDOWS\Explorer.exe" в килобайтах

    ${GetSize} "C:\WINDOWS" "/M=Explorer.exe /S=0K /G=0" $0 $1 $2
    ; $0="220" Kb
    ; $1="1"   файлов
    ; $2=""    директорий

    IfErrors 0 +2
    MessageBox MB_OK "Ошибка"
SectionEnd

2. Определение размера директории
Section
    ; Определение размера директории "C:\Installs\Reanimator\Drivers" в Мегабайтах

    ${GetSize} "C:\Installs\Reanimator\Drivers" "/S=0M" $0 $1 $2
    ; $0="132" Mb
    ; $1="555" файлов
    ; $2="55"  директорий

    IfErrors 0 +2
    MessageBox MB_OK "Ошибка"
SectionEnd

3. Подсчет файлов и директорий
Section
    ; Подсчет файлов и директорий в каталоге "C:\WINDOWS" (без поддиректорий)

    ${GetSize} "C:\WINDOWS" "/G=0" $0 $1 $2
    ; $0=""    размер
    ; $1="253" файлов
    ; $2="46"  директорий

    IfErrors 0 +2
    MessageBox MB_OK "Ошибка"
SectionEnd