Показать полную графическую версию : Подсчет количества ini файлов в папке
Подскажите пожалуйста код скрипта, который бы мог посчитать количество файлов *.ini в папке c:/1 и вывести эту информацию на экран любым видом!
спасибо большое!
Option Explicit
Dim strFolder
Dim objFile
Dim lngCount
strFolder = "c:\1"
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strFolder) Then
lngCount = 0
For Each objFile In .GetFolder(strFolder).Files
If UCase(.GetExtensionName(objFile.Name)) = UCase("ini") Then
lngCount = lngCount + 1
End If
Next
WScript.Echo "Found [" & CStr(lngCount) & "] ini files"
Else
WScript.Echo "Can't find folder [" & strFolder & "]"
End If
End With
WScript.Quit 0
Спасибо, только очень медленно делает, подсчет 709 ини файлов занял минут 5 при 100% загрузке процессора! Нет ли более скоростного метода? Спасибо за помощь
XXXp, сколько у Вас всего файлов в «c:\1»?
в одной папке порядка 50 - он посчитал в течение нескольких секунд. В другой - 709, с этой папкой возникли проблемы - компьютер минут 5 грузился, ЦП был загружен на 100%, в конце (минут через 4-5), он выдал сообщение, что файлов 709...
XXXp, всего файлов. Не «ini», а всего файлов в папке?
XXXp, ну, на таком количестве не должно тормозить. Если бы несколько миллионов файлов в каталоге, да и то, не должно быть так…
А если перезагрузить (!) машину и в командной строке выполнить для Вашей папки «c:\1»:
dir "c:\1\*.ini"
— сколько сие займёт времени?
выполнил команду, выполнилось почти мгновенно (меньше секунды)
XXXp, а если теперь для той же папки «c:\1», опять же — после перезагрузки, попробовать выполнить скрипт?
Также, как и в прошлый раз ожидание заняло порядка 4-5 минут...
XXXp, сожалею.
Вот результат исполнения несколько модифицированного скрипта:
Option Explicit
Dim strFolder
Dim objFile
Dim lngCount
WScript.Echo Now()
With WScript.CreateObject("Scripting.FileSystemObject")
strFolder = .GetSpecialFolder(1)
If .FolderExists(strFolder) Then
lngCount = 0
WScript.Echo "Total [" & .GetFolder(strFolder).Files.Count & "] files"
For Each objFile In .GetFolder(strFolder).Files
If UCase(.GetExtensionName(objFile.Name)) = UCase("ini") Then
lngCount = lngCount + 1
End If
Next
WScript.Echo "Found [" & CStr(lngCount) & "] ini files"
Else
WScript.Echo "Can't find folder [" & strFolder & "]"
End If
End With
WScript.Echo Now()
WScript.Quit 0
для «%SystemRoot%\System32» у меня:
09.04.2012 21:09:41
Total [2345] files
Found [18] ini files
09.04.2012 21:09:45
На предмет поиска причин и анализа «тормозов» при исполнении скрипта стоит обратиться в профильный раздел данного форума в зависимости от Вашей версии Windows, описав проблему и приведя ссылку на данную тему. Скорее всего понадобятся логи, сделанные Process Monitor'ом в момент исполнения скрипта.
Понял, спасибо за помощь!
А если в командной строке все летает, может есть возможность сделать подобное на bat файле?
Можно хоть в пакетном файле, хоть непосредственно в командной строке. Например:
(<nul set /p sValue=Found ini files: & (dir /b /a "%SystemRoot%\System32\*.ini"|find.exe /c /v ""))| msg.exe *"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.