Подсчет количества 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»:
— сколько сие займёт времени?
|
выполнил команду, выполнилось почти мгновенно (меньше секунды)
|
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 *"
|
Время: 09:05.
© OSzone.net 2001-