Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2012, 15:50   #1
foridi
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 14
По умолчанию работа с датой создания файла

Доброго времени суток, уважаемые!

Проблема такая:
под винду нужен скрипт vbs
в папке c:\\test00 периодически появляются файлы 1.txt 2.txt 3.txt 4.txt
задача просмотреть время создания файлов и, если файл 1.txt был создан раньше 3.txt 4.txt,
то в папку c:\test01 положить файл IN.txt. И если наоборот, 4.txt был создан раньше 3.txt и
1.txt, то в папку c:\test01 надо положить файл out.txt
и по факту создания файлов IN или OUT - поубивать содержимое папки test00

все текстовики - пустые, они нужны только с точки зрения их имени и дат создания.

Вся проблема в том, что эти файлы могут появиться в папке в течении 5-7 секунд и как-то надо понять что появилось раньше.
foridi вне форума Ответить с цитированием
Старый 12.09.2012, 18:51   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

> если файл 1.txt был создан раньше 3.txt 4.txt, то в папку c:\test01 положить файл IN.txt.
И если наоборот, 4.txt был создан раньше 3.txt и 1.txt, то в папку c:\test01 надо положить файл out.txt

А если 1.txt был создан раньше 3.txt, но позже 4.txt?
Или если 4.txt был создан раньше 3.txt, но позже 1.txt?
Какую роль в этой темной истории играет 2.txt?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 12.09.2012, 21:54   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Возможно, это вам поможет:

Поиск самого нового файла в папке
http://excelvba.ru/code/LastFile
EducatedFool вне форума Ответить с цитированием
Старый 13.09.2012, 15:25   #4
foridi
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
> .....

А если 1.txt был создан раньше 3.txt, но позже 4.txt?
Или если 4.txt был создан раньше 3.txt, но позже 1.txt?
Какую роль в этой темной истории играет 2.txt?
Смысл этих файлов в том, что их в папку кладет система видеонаблюдения в ней есть программные датчики движения по зонам - соответственно, есть 4 зоны. по факту срабатывания одной из зон она кладёт файлик в папку. Файлики могут появляться только как 1-2-3-4 или 4-3-2-1, зоны выставлены на въезде на территорию, и проезжающая машина их может пересекать по очереди. соответственно так я могу понять въехала машина или выехала. просто нет другой возможности из системы видеонаблюдения транслировать событие во внешнюю программу(((
(потом на основе этих файлов просто уже распознавание номеров работает - надо как-то фильтровать въезд и выезд, оно сейчас распознает все номера одним списком)

и ничего уже изменить не могу((( мне вся эта требуха в наследство досталась от предшественника - начальство требует допилить то, что уже есть и ничего вкладывать не желает(((
foridi вне форума Ответить с цитированием
Старый 13.09.2012, 16:13   #5
foridi
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Возможно, это вам поможет:

Поиск самого нового файла в папке
http://excelvba.ru/code/LastFile
Эээээмммм.... но это же в эксцельке будет работать только...
в vbs-ном то файле я как процедуры напишу? (хотя, мож я чего-то не знаю)
тут тема вся в том, что я не могу запустить из видеонаблюдения ничего кроме экзешника (там есть возможность по факту срабатывания датчика движения запустить программу) - соответственно я сначала пишу vbs-ный сценарий, а потом его конвертирую прогой vbstoexe в экзешник.
... а уже эти экзешники и должны будут запускать требующийся скрипт:
они при создании файлов в папке постоянно проверяют - если файлов больше 3-х, то управление передаем скрипту, который и анализирует что появилось первым и соответственно сообщаем (см пост выше) распознаванию номеров - что это, въезд или выезд.

воть.
foridi вне форума Ответить с цитированием
Старый 13.09.2012, 16:17   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Это без проблем должно работать в виде файла VBS

Код:
Sub УжасноСложныйМакрос()
    On Error Resume Next: Err.Clear
    folder$ = "c:\test00\"
    
    Dim res As Boolean: res = FileDateTime(folder$ & "1.txt") < FileDateTime(folder$ & "4.txt")
    If Err Then Exit Sub    ' один из файлов не найден (или оба не найдены)
    
    MkDir "c:\test01\" ' создаем папку, если её нет

    If res Then
        ' если 1.txt создан раньше чем 4.txt
        FileCopy folder$ & "1.txt", "c:\test01\IN.txt"    ' создаем файл
    Else
        ' если 4.txt создан раньше чем 1.txt
        FileCopy folder$ & "1.txt", "c:\test01\OUT.txt"    ' создаем файл
    End If

    Kill folder$ & "*"    ' удаляем все файлы из папки
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 13.09.2012, 16:24   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

При использовании скрипта в VBS немного подкорректировать придется - например, убрать Dim res As Boolean

Можно и цикл встроить - с проверкой на наличие файлов каждые несколько секунд.

И конвертировать в EXE совсем необязательно - в планировщик задач можно засунуть и выполнение скрипта VBS

Вот одного не понял - создался файл IN
Через минуту другая машина выехала - создался файл OUT
Потом снова машина заехала - снова создался файл IN (хотя он уже есть)
Смысл дальше создавать файлы? Оба файла ведь уже есть в папке...
EducatedFool вне форума Ответить с цитированием
Старый 13.09.2012, 16:48   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
тут тема вся в том, что я не могу запустить из видеонаблюдения ничего кроме экзешника (там есть возможность по факту срабатывания датчика движения запустить программу) - соответственно я сначала пишу vbs-ный сценарий, а потом его конвертирую прогой vbstoexe в экзешник.
извините, что немного в offtop - но почему бы Вам не воспользовать любым нормальным языком программирования с компилятором ?

Могу завтра Вам написать подобную программу на Delphi (и научить компилировать, если надо)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.09.2012, 17:14   #9
foridi
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
При использовании скрипта в VBS немного подкорректировать придется - например, убрать Dim res As Boolean

Можно и цикл встроить - с проверкой на наличие файлов каждые несколько секунд.

И конвертировать в EXE совсем необязательно - в планировщик задач можно засунуть и выполнение скрипта VBS

Вот одного не понял - создался файл IN
Через минуту другая машина выехала - создался файл OUT
Потом снова машина заехала - снова создался файл IN (хотя он уже есть)
Смысл дальше создавать файлы? Оба файла ведь уже есть в папке...
Гм... каюсь, сумбурненько объяснил..
Я изначально файлы 1-2-3-4 создаю скриптом, но этот скрипт запускает не винда и ее планировщик. его запускает сама прога (сервер) видеонаблюдения по факту срабатывания одного из программных датчиков движения. а из этого чудо-сервера видеонаблюдения я вообще ничего транслировать не могу во внешние программы((( я даже не могу транслировать событие срабатываня датчика движения в какой-то конкретной камере(((
зато у этой проги есть функция при срабатывании датчика движения - проиграть звук. вот чуток с этим моментом похимичив, я смог не звук играть, а экзешник запускать. (скрипт, батник, цмд-шник пробовал - не запускаеся. тока exe получается. отсюда и нужность конвертить скрипт)

а касаемо вопросов Ваших:
прога, которая номера распознает - на базе 1с 8.2, (точнее движок распознания к нему прикручен) А 1с-ом я как раз уже по наличию IN или OUT безусловно понимаю въезд или выезд произошел. И, как только номерок машины распознался, прежде чем фотку с камеры дёргать, мне надо понять с какой - вот и лезем в папку, проверяем направление и соответственно уже нужную камеру дёргаем. а файлик я уже 1с-ом из папки грохну.

просьба:
а чуть подробнее можно про убрать Dim res As Boolean?
и про цикл - чтобы оно раз в секунду-две проверяло)))

Последний раз редактировалось foridi; 13.09.2012 в 17:25.
foridi вне форума Ответить с цитированием
Старый 13.09.2012, 17:17   #10
foridi
Пользователь
 
Регистрация: 02.08.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
извините, что немного в offtop - но почему бы Вам не воспользовать любым нормальным языком программирования с компилятором ?

Могу завтра Вам написать подобную программу на Delphi (и научить компилировать, если надо)...
Просто потому, что не сталкивался с этим ниразу. ВБА-то в эксцеле приходилось использовать частенько, отсюда и выбор такой))
foridi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование файла с датой в имени random_name Общие вопросы C/C++ 2 15.09.2012 21:47
Работа с датой. VladimirNew Общие вопросы Delphi 4 20.12.2011 13:13
работа с датой FullmetalAlchemist Microsoft Office Excel 4 25.05.2010 14:42
Работа с датой EugeneIsmatulin Общие вопросы Delphi 8 16.06.2009 13:24
Работа с датой Aleksandr Общие вопросы Delphi 12 29.09.2008 14:01