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

  • Май 20, 2012, 12:57:37 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:

Создан файловый архив для участников форума.

Закачивайте свои файлы и получайте рейтинг, прямые ссылки, и т.п.

Для изображений и скриншотов по прежнему есть AUTOIT.RV.UA

Реклама

Автор Тема: Проверка на существование файлов и папок  (Прочитано 973 раз)

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

Nordik [?]

  • Новичок
  • *
  • Репутация: 0
  • Offline Offline
  • Сообщений: 4
  • Версия AutoIt: 3.3.6.1
    • Награды
Не ругайте сильно я новичек в этом деле.
 Пишу скрипт на  проверку бекапов с исходником (пока только по дате создания)
Скрипт  все проверяет сравнивает создает лог файл
Но если в одной из нет одного файла   который есть в другой папке то прога вылетает, пытался провервку всунуть FileExist так и не смог (хотелось бы чтобы он проверял на  наличие файла и если нет такого то заносить в лог инфу что в такой то папке нет такого то файла)

Код: AutoIt [Выделить]
#include <Date.au3>
 $search = FileFindFirstFile("*.*")  
  While 1
 
$file = FileFindNextFile($search)
$1 = $CmdLine[1]
$2 = $CmdLine[2]  ;путь ко второй папке  
$root1 = 'otchet'
if @error  Then ExitLoop
     $path1 = $1 & '\' & $file
     $path2 = $2 & '\' & $file  

;If FileExists($path1) Then
         $aTime1 = FileGetTime($path1)
         $aTime2 = FileGetTime($path2)
         $sTime1 = $aTime1[0] & '/' & $aTime1[1] & '/' & $aTime1[2] & ' ' & $aTime1[3] & ':' & $aTime1[4] & ':' & $aTime1[5]
         $sTime2 = $aTime2[0] & '/' & $aTime2[1] & '/' & $aTime2[2] & ' ' & $aTime2[3] & ':' & $aTime2[4] & ':' & $aTime2[5]

         If _DateDiff('s', $sTime1, $sTime2) > 0 Then
                 ;  MsgBox(0, '', $path1 & ' Создан раньше чем ' & $path2)
                 $filetxt1 = FileOpen(@ScriptDir & '\' & $root1 & '_отл.txt', 1)
                 FileWriteLine($filetxt1, $path1 & ' Создан раньше чем ' & $path2 &@CRLF)
   
            ElseIf _DateDiff('s', $sTime1, $sTime2) = 0 Then
                 ; MsgBox(0, '', 'Они одинаковы')
                 $filetxt1 = FileOpen(@ScriptDir & '\' & $root1 & '_схож.txt', 1)
                FileWriteLine($filetxt1, $path1 & ' создан также ' & $sTime1 & ' как и ' & $path2 & @CRLF)
            Else
                 ; MsgBox(0, '', $path2 & ' Создан раньше чем ' & $path1)
                 $filetxt1 = FileOpen(@ScriptDir & '\' & $root1 & '_отл.txt', 1)
                 FileWriteLine($filetxt1, $path2 & ' Создан раньше чем ' & $path1 &@CRLF)
            EndIf  

WEnd
 

Кто может подскажет куда надо вписать FileExist




  Записан

`p r o x y [?]

  • Глобальный модератор
  • *
  • ****
  • Репутация: 114
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 596
  • Версия AutoIt: 3.3.6.1
  • «Улыбайтесь, господа!»
    • WWW
    • Награды
Re: Проверка на существование файлов и папок
« Ответ #1, Отправлен: Февраль 18, 2011, 12:36:07 »
У Вас верный ход мысли - закомментированную строчку надо изменить на:
Если нет файла по адресу $path1 или нет файла по адресу $path2, то выйти из цикла.




  Записан
1 тема – 1 вопрос.
Как правильно назвать свою тему – подскажут тут.
На форуме принято помечать тему «решенной» после получения ответа на свой вопрос.

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: Проверка на существование файлов и папок
« Ответ #2, Отправлен: Февраль 18, 2011, 12:36:47 »
Nordik  [?]
Цитата
если в одной из нет одного файла   который есть в другой папке то прога вылетает
Значит неправильно составлен код. Нужно проверять код ошибки у любых фукнций, которые возвращают массивы.

Код: AutoIt [Выделить]
#include <Date.au3>

If $CmdLine[0] = 0 Then
    Exit ;Иначе тоже будет ошибка при неверном количестве переданных параметров
EndIf

$1 = $CmdLine[1]
$2 = $CmdLine[2] ;путь ко второй папке

$search = FileFindFirstFile("*.*")

While 1
    $file = FileFindNextFile($search)
   
    If @error Then
        ExitLoop
    EndIf
   
    $root1 = 'otchet'
   
    $path1 = $1 & '\' & $file
    $path2 = $2 & '\' & $file
   
    $aTime1 = FileGetTime($path1)
    $aTime2 = FileGetTime($path2)
   
    If Not IsArray($aTime1) Or Not IsArray($aTime2) Then
        ContinueLoop
    EndIf
   
    $sTime1 = $aTime1[0] & '/' & $aTime1[1] & '/' & $aTime1[2] & ' ' & $aTime1[3] & ':' & $aTime1[4] & ':' & $aTime1[5]
    $sTime2 = $aTime2[0] & '/' & $aTime2[1] & '/' & $aTime2[2] & ' ' & $aTime2[3] & ':' & $aTime2[4] & ':' & $aTime2[5]
   
    If _DateDiff('s', $sTime1, $sTime2) > 0 Then
        ;  MsgBox(0, '', $path1 & ' Создан раньше чем ' & $path2)
        FileWriteLine(@ScriptDir & '\' & $root1 & '_отл.txt', $path1 & ' Создан раньше чем ' & $path2 & @CRLF)
    ElseIf _DateDiff('s', $sTime1, $sTime2) = 0 Then
        ; MsgBox(0, '', 'Они одинаковы')
        FileWriteLine(@ScriptDir & '\' & $root1 & '_схож.txt', $path1 & ' создан также ' & $sTime1 & ' как и ' & $path2 & @CRLF)
    Else
        ; MsgBox(0, '', $path2 & ' Создан раньше чем ' & $path1)
        FileWriteLine(@ScriptDir & '\' & $root1 & '_отл.txt', $path2 & ' Создан раньше чем ' & $path1 & @CRLF)
    EndIf
WEnd




  Записан
Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.



«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Nordik [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 4
  • Версия AutoIt: 3.3.6.1
    • Награды
Re: Проверка на существование файлов и папок
« Ответ #3, Отправлен: Февраль 18, 2011, 13:20:35 »
Nordik  [?]
Цитата
если в одной из нет одного файла   который есть в другой папке то прога вылетает
Значит неправильно составлен код. Нужно проверять код ошибки у любых фукнций, которые возвращают массивы.
Спасибо за совет все работает.
Код: AutoIt [Выделить]
If Not IsArray($aTime1) Or Not IsArray($aTime2) Then
        ContinueLoop
    EndIf

Я прально понял, это и есть проверка на существование файлов т.к все работает сейчас. Т.е тут идет проверка переменной  на принадлежность  к массиву.

А как тогда сделать что бы  записывало в лог файл  каких файлов нет в первой папке по сравнению со второй ?
« Последнее редактирование: Февраль 18, 2011, 14:01:57 от Nordik »



  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: Проверка на существование файлов и папок
« Ответ #4, Отправлен: Февраль 18, 2011, 18:16:59 »
Nordik  [?]
Цитата
это и есть проверка на существование файлов
Нет, это проверка на то, являются ли массивами переменные «$aTime1» и «$aTime2», в данном случае это избавляет от необходимости поверять существование файлов, мы как бы убиваем два зайца, т.к проверку на ошибочность функций FileGetTime всё равно нужно выполнять.




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Online Online
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
Re: Проверка на существование файлов и папок
« Ответ #5, Отправлен: Февраль 18, 2011, 18:19:29 »
Nordik  [?]
Цитата
А как тогда сделать что бы  записывало в лог файл  каких файлов нет в первой папке по сравнению со второй ?
Не понял, что значит по сравнению?




  Записан

Nordik [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 4
  • Версия AutoIt: 3.3.6.1
    • Награды
Re: Проверка на существование файлов и папок
« Ответ #6, Отправлен: Февраль 21, 2011, 10:11:47 »
Nordik  [?]
Цитата
А как тогда сделать что бы  записывало в лог файл  каких файлов нет в первой папке по сравнению со второй ?
Не понял, что значит по сравнению?
Есть папка с бекапом  и его  копией  я их сравниваю по времени и дате создания. Мне необходимо, если какого то файла нет в копии бекапа,  чтобы об этом была занесена информация в лог файл.




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
[Данные, строки] проверка трех папок на их содержимое
AutoIt для новичков
tenitii 2 894 Последний ответ Июнь 14, 2010, 16:52:55
от tenitii
TOSHIFEX - Откат скрытых файлов и папок / системных файлов / расширении файлов
Примеры и рабочие проекты
CreatoR 7 2417 Последний ответ Апрель 16, 2011, 00:12:31
от CreatoR
поиск файлов в выбраном диске на существование определённой строки
AutoIt для новичков
Sergey2210 6 876 Последний ответ Февраль 16, 2011, 15:59:43
от e-Mike
Перенесено: поиск файлов в выбраном диске на существование определённой строки
Стол заказов
CreatoR 0 479 Последний ответ Февраль 12, 2011, 22:02:30
от CreatoR
Проверка на существование папки
AutoIt для новичков
Sergey2210 10 1296 Последний ответ Сентябрь 11, 2011, 17:33:25
от armenxxx1
Дерево папок и файлов
AutoIt для новичков
armenxxx1 3 571 Последний ответ Ноябрь 03, 2011, 22:09:22
от AZJIO
Разархивация файлов/папок по checkbox
AutoIt для новичков
k790 14 990 Последний ответ Декабрь 08, 2011, 17:55:36
от k790
получение значения переменных из названий папок и файлов с помощью шаблона
Регулярные выражения и прочее
black1 7 571 Последний ответ Январь 29, 2012, 02:31:14
от black1
Проверка сайта на существование
AutoIt для новичков
forfrends 6 368 Последний ответ Январь 29, 2012, 04:53:13
от CreatoR
Удаление файлов и папок из списка.
Стол заказов
Fergus 2 219 Последний ответ Апрель 08, 2012, 22:34:38
от Fergus


Реклама

* Последние сообщения на форуме
post Re: [Мышь, клавиатура] Привязка клика по координатам к клавише
[Стол заказов] megatoxx Сегодня в 12:41:37
post Re: Защита исходного кода программы
[AutoIt для новичков] iamOmg Сегодня в 12:35:14
post Re: Защита исходного кода программы
[AutoIt для новичков] Ganibal95 Сегодня в 12:34:22
post Re: Защита исходного кода программы
[AutoIt для новичков] iamOmg Сегодня в 12:33:22
post Re: Защита исходного кода программы
[AutoIt для новичков] Ganibal95 Сегодня в 12:21:05
post Re: Проблема с циклами While
[AutoIt для новичков] Yashied Сегодня в 12:14:25
post Сглаживание рывков при передачи новых координат игрока по TCP/IP
[Общение] Ganibal95 Сегодня в 12:10:37
post Перенесено: Уроки программирования и автоматизации посредством AutoIt для чайников
[AutoIt для новичков] Yashied Сегодня в 12:09:28
post Re: Защита исходного кода программы
[AutoIt для новичков] iamOmg Сегодня в 12:09:05
post Проблема с циклами While
[AutoIt для новичков] Andeangl Сегодня в 11:03:15

* Пользователи онлайн
  • Dot Гостей: 113
  • Dot Скрыт: 2
  • Dot Пользователей: 31
  • Dot Пользователи Online: