Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Переименование группы файлов по дате создания (http://forum.oszone.net/showthread.php?t=232452)

Serg2010 09-04-2012 21:50 1896611

Переименование группы файлов по дате создания
 
Добрый день!

Подскажите, как в некоторой папке, по какой-либо маске (к примеру *.arj) переименовать все файлы удовлетворяющие маске добавив впереди дату создания до секунд.
например было Dat_day1.arj, а будет, например, 2012-04-09-23-44-25_Dat_day1.arj, где сначала идет год, месяц, день и т.д. Как переименовать отдельный файл знаю, а вот обойти все в цикле затрудняюсь. Необходимо сделать все проверки на наличие папки, файлов и т.д. что там по уму нужно.

Спасибо.

madmasles 10-04-2012 10:25 1896887

Serg2010,
Попробуйте так.
Код:

;#include <Array.au3>
#include <File.au3>

Global $sDir = @ScriptDir & '\BackUp\', $sMask = '*.au3', $iCount

If Not StringInStr(FileGetAttrib($sDir), 'd') Then Exit -33

$aFiles = _FileListToArray($sDir, $sMask, 1)
If @error Then Exit -55
;_ArrayDisplay($aFiles)
For $i = 1 To $aFiles[0]
    $sDate = ''
    If StringRegExp($aFiles[$i], '^\d{4}_\d{2}_\d{2}_\d{2}_\d{2}_\d{2}_') Then ContinueLoop ;если уже переименованы
    $aTime = FileGetTime($sDir & $aFiles[$i], 1)
    If @error Then ContinueLoop
    For $j = 0 To UBound($aTime) - 1
        $sDate &= $aTime[$j] & '_'
    Next
    If FileMove($sDir & $aFiles[$i], $sDir & $sDate & $aFiles[$i], 1) Then $iCount += 1
Next
MsgBox(64, 'Info', StringFormat('All files: %d\nRename files: %d', $aFiles[0], $iCount))



Время: 12:41.

Время: 12:41.
© OSzone.net 2001-