Компьютерный форум 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=162435)

cra5h_ 05-01-2010 14:00 1311327

Переименовать файл
 
Помогите пожалуйста как реализовать такое переименовывание файла.
выбраный файл переименовывается и задаётся по следующему формату: текущая дата+не повторяемый за день цифра или буква (1-0, a-z), пример файлы 1209h, 0110k, 0110f, 01109.

Creat0R 05-01-2010 14:38 1311375

Цитата:

Цитата cra5h_
не повторяемый за день цифра или буква »

Что значит «за день»? как скрипт должен определять что буква не повторялась, проверять все файлы в папке?

Код:

FileMove("file", @MON & StringRight(@YEAR, 2) & "a")

cra5h_ 05-01-2010 15:14 1311420

да скрипт примерно верен. по поводу символа за день - тоесть например 01 10 можно использовать только один раз символ из строки 0123465789аbcdefghijklmnopqrstuvwxyz. второй файл который будет переименовыватся 01 10 будет использовать один символ из строки 123465789аbcdefghijklmnopqrstuvwxyz (без 0) и т.д.

Creat0R 05-01-2010 15:23 1311433

Цитата:

Цитата cra5h_
тоесть например 01 10 можно использовать только один раз символ из строки »

Всё равно не ясно, как следует определять, что символ уже использовался, или скрипт должен висеть в цикле и переименовывать файлы (по хоткею?), либо проверять существующие файлы?

cra5h_ 05-01-2010 15:50 1311460

нет скрипт должен срабатывать один раз при выборе файла.
следующий выбраный файл не должен иметь такое же название поэтому и поэтому в его названии должен быть другой символ.
У меня только одна идея как это сделать - после переименования файла оставшиеся не использованные символы записываются в ini файл и при запуске скрипта считываются

Creat0R 05-01-2010 16:13 1311484

Цитата:

Цитата cra5h_
следующий выбраный файл не должен иметь такое же название »

А что если просто придавать этому файлу новое (не существующее) имя, в виде: 0110_1, 0110_2 и т.д.?

cra5h_ 05-01-2010 16:22 1311492

Нет такой вариант не подходит так как не будет с чем сравнить, переименованный файл отправляется по почте и тем самым удаляется из каталога.

Creat0R 05-01-2010 16:55 1311537

Цитата:

Цитата cra5h_
не будет с чем сравнить, переименованный файл отправляется по почте и тем самым удаляется из каталога »

Тогда примерно так:

Код:

$sFile = FileOpenDialog("Select fie", "", "All files (*.*)")
If @error Then Exit

$sReg_Path = "HKCU\Software\" & @ScriptName
$sKey_Name = "Folder Sufix"
$sChars = "0123465789аbcdefghijklmnopqrstuvwxyz"
$sRead_Chars = RegRead($sReg_Path, $sKey_Name)
If $sRead_Chars = "" Then $sRead_Chars = $sChars
$sSufix_Char
= StringLeft($sRead_Chars, 1)

RegWrite($sReg_Path, $sKey_Name, "REG_SZ", StringTrimLeft($sRead_Chars, 1))

$sPath = StringRegExpReplace($sFile, "\\[^\\]*$", "")
FileMove($sFile, $sPath & "\" & @MON & StringRight(@YEAR, 2) & $sSufix_Char)


cra5h_ 05-01-2010 17:17 1311559

спасибо и на этом.
в этом скрипте если заканчиваются символы из $sChars то они заново заполняются в не зависимости от того закончился день(или сменилась дата) или нет.
Как добавить сюда ограничение на количество переименованых файлов за день (в нашем случае 35) и разрешить переименовать файл только когда смениться дата.

Creat0R 05-01-2010 17:29 1311569

Цитата:

Цитата cra5h_
в этом скрипте если заканчиваются символы из $sChars то они заново заполняются в не зависимости от того закончился день(или сменилась дата) или нет. »

Ну вообще то задача была поставлена очень смутно, опиши поэтапно что должен делать скрипт.

cra5h_ 05-01-2010 17:47 1311590

выбирается файл который переименовывается в зависимости от текущей даты. Имя файла формируется из следующих данных день, месяц, год + один произвольный неповтояющийся символ (из строки 0123465789аbcdefghijklmnopqrstuvwxyz) чтобы названия файлов были разные. За определённую дату можно переименовать только ограниченное число файлов (это ограничивается количеством символов из строки 0123465789аbcdefghijklmnopqrstuvwxyz), тоесть после смене даты можно снова переименовывать файлы.
После переименования через некоторое время файл будет удалён.

Creat0R 05-01-2010 23:02 1311912

Код:

$sReg_Path = "HKCU\Software\" & @ScriptName
$sKey_Name = "Folder Sufix"
$sDate_Sufix = @MDAY & @MON & @YEAR
$sChars = "0123465789аbcdefghijklmnopqrstuvwxyz_" & $sDate_Sufix

$sRead_Chars
= RegRead($sReg_Path, $sKey_Name)
$iError = @error

If $sRead_Chars == "_" & $sDate_Sufix Then Exit
If $iError <> 0 Or Not StringRegExp($sRead_Chars, "[0-9a-z]+_\Q" & $sDate_Sufix & "\E$") Then $sRead_Chars = $sChars

$sSufix_Char
= StringLeft($sRead_Chars, 1)

$sFile = FileOpenDialog("Select fie", "", "All files (*.*)")
If @error Then Exit

$sNew_File = StringRegExpReplace($sFile, "\\[^\\]*$", "") & "\" & $sDate_Sufix & $sSufix_Char

FileMove($sFile, $sNew_File)
RegWrite($sReg_Path, $sKey_Name, "REG_SZ", StringTrimLeft($sRead_Chars, 1))


cra5h_ 11-01-2010 16:58 1317355

самое оно. Убрал только привязку к реестру, сделал на ini файле. Спасибо


Время: 13:29.

Время: 13:29.
© OSzone.net 2001-