Автор Тема: [Файловая система] Выбор папки из директории по дате последнего изменения  (Прочитано 1001 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Oleg-lamer [?]

  • Новичок
  • *
  • Сообщений: 10
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.3.14.2

Описание:
Есть некая папка Dir
В ней лежит еще несколько папок с разными названиями (цифры, буквы)\
Задача выбрать из этих папок ту над которой производились последние изменения и передать ее имя в переменную
$Version
 
Т.е. у меня есть команда на запуск файла:
run (@ProgramFilesDir & "\1cv8\" & $Version & "\bin\chdbfl.exe","", @SW_HIDE,7)
И соответственно вместо Version должно быть имя папки с версией программы в духе "8.3.2056" и периодически в паке 1cv8 будут появлятся новые папки с новыми версиями проги, и мне нужно чтобы скрипт всегда запускал файл из последней созданной папки в расположении 1cv8.

Примечания:
я находил различные виды решения но для поиска файлов в папках, и они были очень громоздкие, я не мог понять как их переделать под поиск папок, ибо как понятно из ник-нейма, я еще совсем недавно (первая неделя) как начал работать с autoit.

Если напишите код с коментариями буду прям ну очень признателен, ибо хочу потихоньку разобратся как все это работает.

Русское сообщество AutoIt


Помечен как лучший ответ пользователем Oleg-lamer Отправлен Октябрь 31, 2017, 13:18:50

Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 812
  • Репутация: 146
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Так, вроде-бы проще всего :
(нажмите для показа/скрытия)
« Последнее редактирование: Октябрь 30, 2017, 20:28:02 от ra4o »

Оффлайн Oleg-lamer [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Отлично! Работает! Огромное спасибо, и отдельное за комменты. не сразу сообразил какую из переменных вытаскивать, для получения имени папки, но через пару минут вкурил)

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3999
  • Репутация: 961
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
Тема не решена

Скорблю и помню.




Русское сообщество AutoIt


Оффлайн Oleg-lamer [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Понимаю что где то туплю но не пойму как так, вот этот код переделанный под мои нужды у меня работал без вопросов, но вдруг стал ругатся что обращается к не заведенной переменной. Раньше я отсюда брал $LastFile и вставлял его в нужные места, но теперь он этого не дает сделать и я прям потерялся - а какая переменная в результате работы этой функции будет искомым обьектом? Я не могу понять куда передается результат.
Код: AutoIt [Выделить]
Global $MyDir = (@ProgramFilesDir & "\1cv8\") ;Папка , где искать
;Получение массива с именами папок в указанной дирректории
$AllFile = _FileListToArray($MyDir, Default, 2)
If IsArray($AllFile) Then ;Если массив создан
    ;Для начала предполагаем, что первая папка и есть последняя модифицированная
    $LastFile = $AllFile[1]
    $LastFileDate = FileGetTime($MyDir & '\' & $AllFile[1], 0, 1)
    ;Если найдено больше, чем одна папка
    If $AllFile[0] > 1 Then
        ;Сравниваем дату модификации каждой из папок
        For $i = 2 To $AllFile[0]
            If FileGetTime($MyDir & '\' & $AllFile[$i], 0, 1) > $LastFileDate Then
                $LastFile = $AllFile[$i]
                $LastFileDate = FileGetTime($MyDir & '\' & $AllFile[$i], 0, 1)
            EndIf
        Next
    EndIf
 EndIf
 


Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1437
  • Репутация: 213
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
... но вдруг стал ругатся...
А первую строку-то скрипта от ra4o где потеряли?

Оффлайн Oleg-lamer [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
не инклюд у меня в коде на месте. я в комент его не добавил только. в общем коде оно вообще вот так выглядит
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>

#include <File.au3>

#include <Date.au3>

#include <Inet.au3>

Global $MyDir = (@ProgramFilesDir & "\1cv8") ;Папка , где искать
;Получение массива с именами папок в указанной дирректории
$AllFile = _FileListToArray($MyDir, Default, 2)
If IsArray($AllFile) Then ;Если массив создан
    ;Для начала предполагаем, что первая папка и есть последняя модифицированная
    $LastFile = $AllFile[1]
    $LastFileDate = FileGetTime($MyDir & '\' & $AllFile[1], 0, 1)
    ;Если найдено больше, чем одна папка
    If $AllFile[0] > 1 Then
        ;Сравниваем дату модификации каждой из папок
        For $i = 2 To $AllFile[0]
            If FileGetTime($MyDir & '\' & $AllFile[$i], 0, 1) > $LastFileDate Then
                $LastFile = $AllFile[$i]
                $LastFileDate = FileGetTime($MyDir & '\' & $AllFile[$i], 0, 1)
            EndIf
        Next
    EndIf
 EndIf

 


Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1437
  • Репутация: 213
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Пробуйте:
(нажмите для показа/скрытия)

Русское сообщество AutoIt


Оффлайн Oleg-lamer [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
3576 Просмотров
Последний ответ Декабрь 12, 2009, 08:02:03
от snoitaleR
7 Ответов
6494 Просмотров
Последний ответ Декабрь 15, 2009, 01:25:52
от Kaster
7 Ответов
5903 Просмотров
Последний ответ Ноябрь 18, 2010, 09:20:30
от akoulev
2 Ответов
7429 Просмотров
Последний ответ Февраль 18, 2011, 00:41:16
от `p r o x y
3 Ответов
2754 Просмотров
Последний ответ Август 16, 2011, 09:12:39
от DelphiExpert
6 Ответов
3972 Просмотров
Последний ответ Сентябрь 15, 2011, 15:10:06
от Zaramot
4 Ответов
2581 Просмотров
Последний ответ Январь 12, 2013, 14:59:59
от Medic84
0 Ответов
2253 Просмотров
Последний ответ Январь 13, 2013, 11:20:20
от joiner
6 Ответов
3069 Просмотров
Последний ответ Октябрь 14, 2015, 15:03:47
от NinjaScript
1 Ответов
177 Просмотров
Последний ответ Июль 22, 2018, 13:45:45
от sngr