Показать полную графическую версию : [решено] Переименовать файл
Помогите пожалуйста как реализовать такое переименовывание файла.
выбраный файл переименовывается и задаётся по следующему формату: текущая дата+не повторяемый за день цифра или буква (1-0, a-z), пример файлы 1209h, 0110k, 0110f, 01109.
не повторяемый за день цифра или буква »
Что значит «за день»? как скрипт должен определять что буква не повторялась, проверять все файлы в папке?
FileMove("file", @MON & StringRight(@YEAR, 2) & "a")
да скрипт примерно верен. по поводу символа за день - тоесть например 01 10 можно использовать только один раз символ из строки 0123465789аbcdefghijklmnopqrstuvwxyz. второй файл который будет переименовыватся 01 10 будет использовать один символ из строки 123465789аbcdefghijklmnopqrstuvwxyz (без 0) и т.д.
тоесть например 01 10 можно использовать только один раз символ из строки »
Всё равно не ясно, как следует определять, что символ уже использовался, или скрипт должен висеть в цикле и переименовывать файлы (по хоткею?), либо проверять существующие файлы?
нет скрипт должен срабатывать один раз при выборе файла.
следующий выбраный файл не должен иметь такое же название поэтому и поэтому в его названии должен быть другой символ.
У меня только одна идея как это сделать - после переименования файла оставшиеся не использованные символы записываются в ini файл и при запуске скрипта считываются
следующий выбраный файл не должен иметь такое же название »
А что если просто придавать этому файлу новое (не существующее) имя, в виде: 0110_1, 0110_2 и т.д.?
Нет такой вариант не подходит так как не будет с чем сравнить, переименованный файл отправляется по почте и тем самым удаляется из каталога.
не будет с чем сравнить, переименованный файл отправляется по почте и тем самым удаляется из каталога »
Тогда примерно так:
$sFile = FileOpenDialog (http://www.autoitscript.com/autoit3/docs/functions/FileOpenDialog.htm)("Select fie", "", "All files (*.*)")
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)
$sReg_Path = "HKCU\Software\" & @ScriptName (http://www.autoitscript.com/autoit3/docs/macros.htm#@ScriptName)
$sKey_Name = "Folder Sufix"
$sChars = "0123465789аbcdefghijklmnopqrstuvwxyz"
$sRead_Chars = RegRead (http://www.autoitscript.com/autoit3/docs/functions/RegRead.htm)($sReg_Path, $sKey_Name)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $sRead_Chars = "" Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) $sRead_Chars = $sChars
$sSufix_Char = StringLeft (http://www.autoitscript.com/autoit3/docs/functions/StringLeft.htm)($sRead_Chars, 1)
RegWrite (http://www.autoitscript.com/autoit3/docs/functions/RegWrite.htm)($sReg_Path, $sKey_Name, "REG_SZ", StringTrimLeft (http://www.autoitscript.com/autoit3/docs/functions/StringTrimLeft.htm)($sRead_Chars, 1))
$sPath = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($sFile, "\\[^\\]*$", "")
FileMove (http://www.autoitscript.com/autoit3/docs/functions/FileMove.htm)($sFile, $sPath & "\" & @MON (http://www.autoitscript.com/autoit3/docs/macros.htm#@MON) & StringRight (http://www.autoitscript.com/autoit3/docs/functions/StringRight.htm)(@YEAR (http://www.autoitscript.com/autoit3/docs/macros.htm#@YEAR), 2) & $sSufix_Char)
спасибо и на этом.
в этом скрипте если заканчиваются символы из $sChars то они заново заполняются в не зависимости от того закончился день(или сменилась дата) или нет.
Как добавить сюда ограничение на количество переименованых файлов за день (в нашем случае 35) и разрешить переименовать файл только когда смениться дата.
в этом скрипте если заканчиваются символы из $sChars то они заново заполняются в не зависимости от того закончился день(или сменилась дата) или нет. »
Ну вообще то задача была поставлена очень смутно, опиши поэтапно что должен делать скрипт.
выбирается файл который переименовывается в зависимости от текущей даты. Имя файла формируется из следующих данных день, месяц, год + один произвольный неповтояющийся символ (из строки 0123465789аbcdefghijklmnopqrstuvwxyz) чтобы названия файлов были разные. За определённую дату можно переименовать только ограниченное число файлов (это ограничивается количеством символов из строки 0123465789аbcdefghijklmnopqrstuvwxyz), тоесть после смене даты можно снова переименовывать файлы.
После переименования через некоторое время файл будет удалён.
$sReg_Path = "HKCU\Software\" & @ScriptName (http://www.autoitscript.com/autoit3/docs/macros.htm#@ScriptName)
$sKey_Name = "Folder Sufix"
$sDate_Sufix = @MDAY (http://www.autoitscript.com/autoit3/docs/macros.htm#@MDAY) & @MON (http://www.autoitscript.com/autoit3/docs/macros.htm#@MON) & @YEAR (http://www.autoitscript.com/autoit3/docs/macros.htm#@YEAR)
$sChars = "0123465789аbcdefghijklmnopqrstuvwxyz_" & $sDate_Sufix
$sRead_Chars = RegRead (http://www.autoitscript.com/autoit3/docs/functions/RegRead.htm)($sReg_Path, $sKey_Name)
$iError = @error (http://www.autoitscript.com/autoit3/docs/macros.htm#@error)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $sRead_Chars == "_" & $sDate_Sufix Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $iError <> 0 Or (http://www.autoitscript.com/autoit3/docs/keywords.htm#Or) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) StringRegExp (http://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm)($sRead_Chars, "[0-9a-z]+_\Q" & $sDate_Sufix & "\E$") Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) $sRead_Chars = $sChars
$sSufix_Char = StringLeft (http://www.autoitscript.com/autoit3/docs/functions/StringLeft.htm)($sRead_Chars, 1)
$sFile = FileOpenDialog (http://www.autoitscript.com/autoit3/docs/functions/FileOpenDialog.htm)("Select fie", "", "All files (*.*)")
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)
$sNew_File = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($sFile, "\\[^\\]*$", "") & "\" & $sDate_Sufix & $sSufix_Char
FileMove (http://www.autoitscript.com/autoit3/docs/functions/FileMove.htm)($sFile, $sNew_File)
RegWrite (http://www.autoitscript.com/autoit3/docs/functions/RegWrite.htm)($sReg_Path, $sKey_Name, "REG_SZ", StringTrimLeft (http://www.autoitscript.com/autoit3/docs/functions/StringTrimLeft.htm)($sRead_Chars, 1))
самое оно. Убрал только привязку к реестру, сделал на ini файле. Спасибо
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC