Что нового

определение размера файла

Oliver Eyre

Новичок
Сообщения
3
Репутация
0
Версия AutoIt: 3.

Описание: помогите, нужно сделать скрипт, который бы создавал file.txt, анализировал размеры всех папок на диске C с заданной глубиной и записывал туда имя, размер, скрипт будет запускаться много раз и нужно, чтобы если file.txt будет содержать более, чем 300 строк или ограничение по размеру, нужно создать файл file_1.txt и продолжить запись в него
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include "RecFileListToArray.au3" ;http://www.autoitscript.com/forum/topic/126198-recfilelisttoarray-new-version-22-may-11

Global $iLimitFileSize = 1024 * 1024 ;1 mb - ограничение размера файла (проверяется при запуске)
Global $iDepthLevel = -5 ;Глубина поиска, используйте 1 для поиска во всех подкаталогах, и 0 для отключения поиска в подкаталогах
Global $sDrive = @HomeDrive ;Каталог поиска и содержащий файл записи
Global $sFileName = "File.txt" ;Имя файла для записи

Global $sFile = $sDrive & "\" & $sFileName

If FileGetSize($sFile) >= $iLimitFileSize Then
	$sFile = $sDrive & "\" & _FileNewName($sFileName, $sDrive, -1, "_", "")
EndIf

$aFiles = _RecFileListToArray($sDrive, "*", 2, $iDepthLevel, 0)
$sData = ""

For $i = 1 To UBound($aFiles)-1
	$sData &= $aFiles[$i] & ", " & DirGetSize($sDrive & "\" & $aFiles[$i]) & @CRLF
Next

$hFile = FileOpen($sFile, 1)
FileWrite($hFile, $sData)
FileClose($hFile)

Func _FileNewName($sFileName, $sDir, $iExt_Mod = -1, $sDelim1 = -1, $sDelim2 = -1)
	If Not StringInStr(FileGetAttrib($sDir), "D") Then Return $sFileName
	If Not FileExists($sDir & "\" & $sFileName) Then Return $sFileName
	
	$sDir = StringRegExpReplace($sDir, "\\ *$", "")
	
	Local $sName = StringRegExpReplace($sFileName, "\.[^.]*$", "")
	If $iExt_Mod <> -1 Then $sName = StringRegExpReplace($sFileName, "\.[^.]*(\.[^.]*$|$)", "")
	
	If $sDelim1 = -1 Then $sDelim1 = " ("
	If $sDelim2 = -1 Then $sDelim2 = ")"
	
	Local $sDelim1_RE = StringRegExpReplace($sDelim1, '([][{}()|.?+*\\^])', '\\\1')
	Local $sDelim2_RE = StringRegExpReplace($sDelim2, '([][{}()|.?+*\\^])', '\\\1')
	
	Local $iDelim_Num = StringRegExpReplace($sName, ".*" & $sDelim1_RE & "(.*)" & $sDelim2_RE & ".*$", "\1")
	If @extended = 0 Then $iDelim_Num = 0
	
	$iDelim_Num = Number($iDelim_Num)
	
	Local $sExtn = StringRegExpReplace($sFileName, "^.*\.", ".")
	If @extended = 0 Then $sExtn = ""
	
	Local $iCount = $iDelim_Num + 1, $sRet_FileName = $sFileName
	
	While FileExists($sDir & "\" & $sRet_FileName)
		If $iDelim_Num > 0 Then
			$sRet_FileName = StringRegExpReplace($sRet_FileName, _
				"(.*)" & $sDelim1_RE & $iDelim_Num & $sDelim2_RE, "\1" & $sDelim1 & $iCount & $sDelim2)
			
			$iDelim_Num += 1
		Else
			If $sDelim1 <> -1 And $sDelim2 <> -1 Then
				$sRet_FileName = $sName & $sDelim1 & $iCount & $sDelim2 & $sExtn
			ElseIf $sDelim1 <> -1 And $sDelim2 = -1 Then
				$sRet_FileName = $sName & $sDelim1 & $iCount & $sExtn
			EndIf
		EndIf
		
		$iCount += 1
	WEnd
	
	Return $sRet_FileName
EndFunc


RecFileListToArray.au3 брать тут.


Добавлено:
Сообщение автоматически объединено:

Oliver Eyre [?]
Уточнять нужно в первом сообщений.
 
Верх