Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Получить максимальное число (в имени файла)

Ответить
Настройки темы
[решено] Получить максимальное число (в имени файла)
D_Master


Сообщения: n/a

Профиль | Цитировать


Доброго времени суток!
Столкнулся с проблемой - не имею понятия, как получить максимально существующее число в имени файла.
Поясню:
C:\folder1\ - исходная папка
C:\folder2\ - конечная папка

В исходной папке время от времени появляются новые папки, имена которых имеют подобный вид: 7983_1128. Два номера между собой не связаны, но оба значения увеличиваются.
Затем, в этих папках есть текстовые файлы, в имени которых так же, присутствуют только цифры (три знака).

Необходимо:
получить максимальное число папки (по первому числу, т.е., 4 знака до "_"), а затем, в этой папке, получить имя файла с максимальным числом (123.txt, к примеру) и скопировать этот файл в папку C:\folder2\.

Буду рад любым советам

Отправлено: 13:09, 11-06-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Хм, задача вроде ясна, попробуем решить:

Код: Выделить весь код
$sSource_Folder = "C:\Folder1"
$sDest_Folder = "C:\Folder2"

$sFolderName = _SearchFile_Proc($sSource_Folder, "*", 0)
$sFileName = _SearchFile_Proc($sSource_Folder & "\" & $sFolderName, "*.txt", 1)

If @error Then Exit MsgBox(48, "Error", "There was an error - no files to copy.")

$sSource_File = $sSource_Folder & "\" & $sFolderName & "\" & $sFileName
$sDest_File = $sDest_Folder & "\" & $sFileName

MsgBox(64, "Results", _
    StringFormat("File found:\n%s\n\nNow we copy this file to destination path:\n%s", $sSource_File, $sDest_File))

FileCopy($sSource_File, $sDest_File, 8+1)

Func _SearchFile_Proc($sPath, $sMask, $iMode=0)
    Local $sRet_Name = "", $nNumber = 0, $nLast_Number = 0
    Local $hSearch, $sNext_FileName

    $hSearch = FileFindFirstFile($sPath & "\" & $sMask)
    If $hSearch = -1 Then Return SetError(1, 0, "")

    While 1
        $sNext_FileName = FileFindNextFile($hSearch)
        If @error Then ExitLoop

        If $iMode = 0 Then
            If Not StringInStr(FileGetAttrib($sPath & "\" & $sNext_FileName), "D") Then ContinueLoop

            $nNumber = Number(StringLeft($sNext_FileName, StringInStr($sNext_FileName, "_")-1))
        Else
            $nNumber = Number(StringTrimRight($sNext_FileName, 4))
        EndIf

        If $nNumber > $nLast_Number Then
            $sRet_Name = $sNext_FileName
            $nLast_Number = $nNumber
        EndIf
    WEnd

    FileClose($hSearch)

    If $sRet_Name = "" Then Return SetError(2, 0, "")
    Return $sRet_Name
EndFunc
Я так понял нужно копировать только файл, без структуры каталогов? Если нужны и каталоги, то в строчке создания переменной «$sDest_File» нужно добавить « & "\" & $sFolderName» после «$sDest_Folder».

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:18, 11-06-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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

D_Master


Сообщения: n/a

Профиль | Цитировать


Это что-то с чем-то Спасибо огромное!

Отправлено: 19:03, 11-06-2009 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Получить максимальное число (в имени файла)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - как ограничить максимальное число скачиваемых файлов в браузерах? God-of-Chaos Программное обеспечение Windows 0 06-10-2009 04:35
Как увеличить максимальное число удаленных подключений ? zi0n Microsoft Windows NT/2000/2003 2 05-04-2009 08:39
Какой программой получить максимальное качество из DV касеты? Big_Baur Видео и аудио: обработка и кодирование 5 14-07-2008 00:12
MSFT SQL Server - SQL 2005 - максимальное число шагов в job-задании VladDV Программирование и базы данных 2 07-05-2008 02:03
Как получить имя текущего пользователя для использования его в имени файла Denchik Автоматическая установка Windows 2000/XP/2003 1 25-01-2006 22:33




 
Переход