Что нового

[Файловая система] Как сделать подсчёт количества файлов в директории?

akoulev

Новичок
Сообщения
166
Репутация
2
Поиск по форуму приемлемого результата не принёс: всё очень уж тяжеловесное; а мне бы просто подсчёт количества файлов в одной директории. Дальше я уже как-нибудь сам... Ай нид хелп, плиз! :smile:

Hint: Упрощать сложнее, чем усложнять. Как оказалось. ;D
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
akoulev
Можно так попробовать:
Код:
#include <File.au3>

$aFiles = _FileListToArray(@ScriptDir, '*', 1)
If IsArray($aFiles) Then
	MsgBox(0, '', 'В папке' & @LF & '"' & @ScriptDir & '"' & @LF & $aFiles[0] & ' файлов.')
Else
	MsgBox(0, 'Error', 'В папке' & @LF & '"' & @ScriptDir & '"' & @LF & 'нет файлов.')
EndIf
Считает без файлов во вложенных директориях, можно по маске считать.
 

SyDr

Сидра
Сообщения
651
Репутация
158
Код:
$x = DirGetSize("path" , 1)
MsgBox(Default, "", $x[1])
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
SyDr
У Вас ошибка закралась в
Код:
MsgBox(Default, Default, "", $x[1])
MsgBox(Default, Default, $x[1])
 

SyDr

Сидра
Сообщения
651
Репутация
158
А. Точно. Я просто сразу в форму ответа писал :smile:
 
Автор
A

akoulev

Новичок
Сообщения
166
Репутация
2
Спасибо!
Для случая подсчёта txt-файлов и просмотра их имён:

Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.4.0
 Author:         myName

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include <File.au3>
$i=0
$aFiles = _FileListToArray(@ScriptDir, '*.txt', 1)
;$aFiles = _FileListToArray(@ScriptDir, '*', 1)
If IsArray($aFiles) Then
    MsgBox(0, '', 'В папке' & @LF & '"' & @ScriptDir & '"' & @LF & $aFiles[0] & ' файлов.')
Else
    MsgBox(0, 'Error', 'В папке' & @LF & '"' & @ScriptDir & '"' & @LF & 'нет файлов.')
EndIf

;MsgBox(0, '', 'В папке ' & $aFiles[0] & ' файлов.')

;#cs ----------------------------------------------------------------------------

;While $i<($aFiles[0]-1)
While $i<($aFiles[0])
	;MsgBox(0, 'Проход', $aFiles[0]-1 )
	;MsgBox(0, 'Проход', $i )
	;MsgBox(0, '', 'В папке' & @LF & '"' & @ScriptDir & '"' & @LF & $aFiles[0] & ' файлов.')
	;MsgBox(0, '', 'В папке' & @LF & @LF & $aFiles[$i+1] & ' - файл.')
	MsgBox(0, '', 'Проход ' & $i+1 & @LF & @LF & 'В папке файл:' & @LF & @LF & $aFiles[$i+1] & ' <=========<')
	$i=$i+1
WEnd
;#ce ----------------------------------------------------------------------------
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
akoulev
По-моему, так проще:
Код:
#include <File.au3>

$sMask = '*.txt'
$aFiles = _FileListToArray(@ScriptDir, $sMask, 1)
If IsArray($aFiles) Then
    MsgBox(0, '', 'В папке' & @LF & '"' & @ScriptDir & '"' & @LF & $aFiles[0] & ' файлов ' & $sMask & '.')
Else
    MsgBox(0, 'Error', 'В папке' & @LF & '"' & @ScriptDir & '"' & @LF & 'нет файлов.')
EndIf
For $i = 1 To $aFiles[0]
    MsgBox(0, '', 'Проход ' & $i & @LF & @LF & 'В папке файл:' & @LF & @LF & $aFiles[$i] & ' <=========<')
Next
:smile:
 
Автор
A

akoulev

Новичок
Сообщения
166
Репутация
2
В последний цикл строчку
Код:
$i=$i+1
добавить забыли. :smile:
Пардоньте - глупость я сказал! Так вот зачем механизм For-Next нужен! Автоприрощение $i - в отличие от While-Wend.
 
Верх