четверг, 29 января 2015 г.

Получить размер каталога (программка на AutoIT)

Понадобилось сегодня в windows мониторить размер каталога... Нужен был скрипт или программа, которая на выход выдает размер каталога со всеми подкаталогами в байтах и ничего более, т.е. одни цифры.
Гуглеж толкового ничего не дал. Поэтому наваял программку на AutoIT.



Собственно сам код:
#AutoIt3Wrapper_Change2CUI=y

If $CmdLine[0] = 0 Then
 ConsoleWriteError("Usage: " & @ScriptName & " C:\path\to\dir")
    Exit
EndIf

ConsoleWrite(DirGetSize($CmdLine[1]))
Самое основное - это последняя строчка скрипта: берем первый параметр командной строки и передаем его функции DirGetSize, результат выводим на консоль.
"#AutoIt3Wrapper_Change2CUI=y" - говорит, что программа будет консольной. Это необходимо, чтобы вывод отображался в том числе и в cmd.exe, а не только передавался другим программам через конвейер "|".
Блок "If" проверяет, что параметр командной строки задан и, если это не так, выводит краткую справку.

Использование:
C:\> gds.exe "C:\path\to\dir"
881837
C:\> 

Исходник и exe'шник можно взять у меня на GitHub'e.





Информация с сайта http://blog.angel2s2.ru/.

3 комментария:

  1. Get-ChildItem путь_к_папке -recurse -Force | Measure-Object -Property Length -Sum в PS. Куда уж проще.

    ОтветитьУдалить
  2. Ответы
    1. Проверил exe-файл на virustotal'e, действительно, некоторые антивири считают, что это троян. Скорее всего они так реагируют потому, что это на компилированный файл, а скрипт внутри exe-файла. В любом случае, исходный код доступен, поэтому каждый может убедиться, что троянских действий в "проге" нет, а так же "скомпилировать" exe'шник самостоятельно.

      Удалить