PDA

Показать полную графическую версию : Переименование группы файлов по дате создания


Serg2010
09-04-2012, 21:50
Добрый день!

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

Спасибо.

madmasles
10-04-2012, 10:25
Serg2010,
Попробуйте так.;#include <Array.au3>
#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <File.au3>

Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $sDir = @ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptdir) & '\BackUp\', $sMask = '*.au3', $iCount

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) StringInStr (http://www.autoitscript.com/autoit3/docs/functions/StringInStr.htm)(FileGetAttrib (http://www.autoitscript.com/autoit3/docs/functions/FileGetAttrib.htm)($sDir), 'd') Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit) -33

$aFiles = _FileListToArray (http://dundats.mvps.org/help/html/libfunctions/_filelisttoarray.htm)($sDir, $sMask, 1)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) @error (http://www.autoitscript.com/autoit3/docs/macros.htm#@error) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit) -55
;_ArrayDisplay($aFiles)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aFiles[0]
$sDate = ''
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) StringRegExp (http://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm)($aFiles[$i], '^\d{4}_\d{2}_\d{2}_\d{2}_\d{2}_\d{2}_') Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) ContinueLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ContinueLoop) ;если уже переименованы
$aTime = FileGetTime (http://www.autoitscript.com/autoit3/docs/functions/FileGetTime.htm)($sDir & $aFiles[$i], 1)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) @error (http://www.autoitscript.com/autoit3/docs/macros.htm#@error) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) ContinueLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ContinueLoop)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $j = 0 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aTime) - 1
$sDate &= $aTime[$j] & '_'
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) FileMove (http://www.autoitscript.com/autoit3/docs/functions/FileMove.htm)($sDir & $aFiles[$i], $sDir & $sDate & $aFiles[$i], 1) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) $iCount += 1
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(64, 'Info', StringFormat (http://www.autoitscript.com/autoit3/docs/functions/StringFormat.htm)('All files: %d\nRename files: %d', $aFiles[0], $iCount))




© OSzone.net 2001-2012