|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Посчитать количество файлов в папке |
|
||||
|
|
Посчитать количество файлов в папке
|
|
Новый участник Сообщения: 35 |
Доброго времени суток ! Подскажите пожалуйста как можно посчитать количество файлов в папке ?
|
|
|
Отправлено: 09:14, 13-08-2009 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 09:26, 13-08-2009 | #2 |
|
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Благодарю ! А если с подкаталогами ? Думаю тоже пригодится.
|
|
Отправлено: 09:27, 13-08-2009 | #3 |
|
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Если папка пуста, вылетает ошибка
Можно как нибудь её обойти ? |
|
Отправлено: 10:06, 13-08-2009 | #4 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Lodoss:
#Include <File.au3> $sFPath = @WindowsDir $aFiles = _FileListToArray($sFPath, '*', 1) $iFiles = 0 If IsArray($aFiles) Then $iFiles = $aFiles[0] MsgBox(64, "Результат", 'В папке "'& $sFPath & '" найдено '& $iFiles &' файлов.') Цитата Lodoss:
![]() #Include <File.au3>
$sFPath = @WindowsDir
$iFiles = _FilesInFolder($sFPath)
MsgBox(64, "Результат", 'В папке "'& $sFPath & '" найдено '& $iFiles &' файлов.')
Func _FilesInFolder($sRoot)
Local $aFolders = _FileListToArray($sRoot,'*', 2)
Local $aFiles = _FileListToArray($sRoot,'*', 1), $iCount=0
If IsArray($aFolders) Then
For $i=1 To $aFolders[0]
$iCount+= _FilesInFolder($sRoot &"\"& $aFolders[$i])
Next
EndIf
If IsArray($aFiles) Then $iCount += $aFiles[0]
Return $iCount
EndFunc
|
|||
|
Отправлено: 10:13, 13-08-2009 | #5 |
|
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Большущее спасибо !!! А то массивы ну никак не могу победить
![]() |
|
Отправлено: 10:23, 13-08-2009 | #6 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Lodoss:
![]() |
|
|
Отправлено: 11:22, 13-08-2009 | #7 |
|
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 00:50, 16-08-2009 | #8 |
|
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Не стал создавать новую тему, так как вопрос, кажется, похожий, но чуть посложней.
Пытался написать скрипт, создающий древовидный список папок и файлов, но мозги закипают и ничего не выходит, кроме "вылетания" скрипта с ошибкой или неверного результата. Понятно, что надо использовать рекурсию, но пока до конца не разобрался. Может, у кого есть готовое решение? :-) |
|
Отправлено: 21:32, 20-08-2009 | #9 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Yoxcel, можно, конечно, и «FileFindFirstFile/FileFindNextFile», однако в этом случае, на мой взгляд, самое простое — пользовать не средства AutoIt, а библиотеку «Scripting.FileSystemObject»:
и делать сие по полной аналогии с известными скриптами vbscript: Local Const $DriveTypeFixed = 2
Local $objFSO
Local $objDrive
$objFSO = ObjCreate("Scripting.FileSystemObject")
For $objDrive In $objFSO.Drives()
If $objDrive.DriveType = $DriveTypeFixed Then
ScanFolders($objDrive.RootFolder)
EndIf
Next
$objFSO = ""
Exit(0)
;=============================================================================
;=============================================================================
Func ScanFolders($objFolder)
Local $objSubFolder
Local $objFile
; Перебирать можно как в нисходящей…
ConsoleWrite("[" & $objFolder.Path & "]" & @CRLF)
For $objFile In $objFolder.Files
ConsoleWrite($objFile.Name & @CRLF)
Next
For $objSubFolder In $objFolder.SubFolders
ScanFolders($objSubFolder)
Next
; …так и в восходящей последовательности.
;ConsoleWrite("[" & $objFolder.Path & "]" & @CRLF)
;
;For $objFile In $objFolder.Files
; ConsoleWrite($objFile.Name & @CRLF)
;Next
EndFunc
;=============================================================================
|
|
Отправлено: 22:43, 20-08-2009 | #10 |
|
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| C/C++ - посчитать количество символов без пробела | ShadowMas | Программирование и базы данных | 5 | 07-05-2009 10:51 | |
| WinApi||посчитать сколько файлов и папок на диске | bezumes | Программирование и базы данных | 16 | 24-12-2006 12:08 | |
| Количество одновременно открытых файлов по сети | inq | Microsoft Windows 2000/XP | 0 | 12-03-2006 21:40 | |
| По smb видно ограниченное количество файлов. | Igor_I | Общий по FreeBSD | 12 | 27-11-2005 18:08 | |
| Увеличить количество одновременно открытых файлов | Guest | Microsoft Windows 95/98/Me (архив) | 2 | 16-10-2002 16:16 | |
|