Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Дата/время изменения файлов из получателя в источник
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Thu Aug 01, 2019 05:54    Post subject: Дата/время изменения файлов из получателя в источник Reply with quote

Нужно менять дату модификации файлов в текущей панели на дату модификации файлов из другой панели. Желательно в 2 вариантах:
1. Изменяется время выделенных в текущей панели файлов на время выбранных в противоположной панели файлов. При условии, что количество выбранных файлов в другой и текущей панели идентично, при том, что имена могут быть разными. В противном случае ничего не делать.
2. Изменяется время всех файлов в текущей панели на время модификации файлов из другой панели. Только тех, чьи имена (вместе с расширениями) совпадают с именами файлов в противоположной панели.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13685
Location: Москва

Post (Separately) Posted: Thu Aug 01, 2019 10:31    Post subject: Reply with quote

1. А если где-то будут выбраны только или частично папки? Смотреть на совпадение кол-ва лучше обработки меньшего из чисел?
2. Папки игнорировать?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Fri Aug 02, 2019 01:17    Post subject: Reply with quote

1. Если выбраны папки, то ничего не делать. То же самое во втором вопросе - только совпадение количества.
2. Имеешь в виду выделенные папки вместо файлов или рекурсию? Если можно (или не сложно) отдельный параметр, то рекурсия не помешала бы. В противном случае лучше без неё.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2244

Post (Separately) Posted: Fri Aug 02, 2019 11:00    Post subject: Reply with quote

Dimsok
Вторую задачу можно решить из диалога синхронизации каталогов: Сравнить, Ctrl+A, Контекстное меню, Копировать свойства файла…
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2244

Post (Separately) Posted: Fri Aug 02, 2019 16:17    Post subject: Reply with quote

Dimsok
Стоит учесть момент, что при использовании синхронизации каталогов в варианте с рекурсией (галка "с подкаталогами"), скопируются метки даты и времени также и папок, содержащих файлы (подробнее здесь).
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13685
Location: Москва

Post (Separately) Posted: Fri Aug 02, 2019 20:45    Post subject: Reply with quote

Про неавтоматизацию в этом разделе мы не говорим...

Dimsok
Проверяй:
Code:
'========================== VBS ===========================
' Замена дат модификации выбранных в активной панели файлов
' на даты модификации файлов, выбранных в пассивной панели

' Условия: • необходим компонент TCScript.dll 1.0.0.15+
'          • числа файлов в панелях должны совпадать
'          • должны быть выбраны только файлы
'          • TC 9.10+
'===================================== Автор: Flasher © ===
Option Explicit: Dim TCH, FSO, A, AList, PList, i, F, MDate
Set TCH = CreateObject("TCScript.Helper")
Set FSO = CreateObject("Scripting.FileSystemObject")
With TCH
  A = .GetInfo(1000)
  Select Case True
    Case .GetInfo(1006+A) + .GetInfo(1004+A) = 0 Quit "В активной панели  ничего не выбрано!"
    Case .GetInfo(1009-A) + .GetInfo(1007-A) = 0 Quit "В пассивной панели ничего не выбрано!"
    Case .GetInfo("LP") =  .GetInfo("RP") Quit  "Источник не должен совпадать с получателем!"
    Case .GetInfo(1005) <> .GetInfo(1006) Quit "Количества выделенных объектов не совпадают!"
  End Select
  .LockTC True : AList = .GetSrcSelectedFiles(1)
  If Right(AList(0), 1) = "\" Then Quit "Снимите выделение с папок активной панели!"
  PList = .GetTrgSelectedFiles(1)
  If Right(PList(0), 1) = "\" Then Quit "Снимите выделение с папок пассивной панели!"
  .LockTC False : A = .GetInfo(1005) : If A = 0 Then A = 1
  For i = 0 To A - 1
    MDate = FSO.GetFile(PList(i)).DateLastModified : Set F = FSO.GetFile(AList(i))
    If MDate <> F.DateLastModified Then .SetFileDateAtr AList(i), F.DateCreated, MDate
  Next
End With
Set TCH = Nothing: Set FSO = Nothing
CreateObject("WScript.Shell").Popup Space(13) & "Выполнено!",_
 1.7, " Замена дат модификации файлов      ", 4160

Sub Quit(Msg)
  Dim Color : Set FSO = Nothing
  With TCH
    .LockTC False
    Color = .INIRead(.MainINI, "Colors", "BackColor", "16777215")
    If Color = "-1" Then Color = 16777215
    CreateObject("Internet.HHCtrl").TextPopup Msg,_
    .INIRead(.MainINI, "AllResolutions", "FontNameTip", "Verdana") &","&_
    .INIRead(.MainINI, "AllResolutions", "FontSizeTip", "10"), 20, 10,_
    Abs(.INIRead(.MainINI,"Colors","ForeColor","-1")), Color
    WSH.Sleep 2000 : Set TCH = Nothing : WSH.Quit
  End With
End Sub
Code:
'=================== VBS ====================
' Изменить даты модификации файлов активной
' панели на даты одноимённых файлов пассивной

' Условие:  путь запуска — пустой

' Параметр: "%T"
' /r — ключ обработки всей файловой структуры
'============================================
Option Explicit: Dim FSO, PPath, PLn, APath, R, AFold, c
Set FSO = CreateObject("Scripting.FileSystemObject")
PPath = WSH.Arguments(0) : PLn  = Len(PPath) + 1
APath = FSO.GetAbsolutePathName("")
R = WSH.Arguments.Named.Exists("r")
With CreateObject("Shell.Application")
  Set AFold = .NameSpace(APath) : Recurse .NameSpace(PPath)
End With
Set AFold = Nothing : Set FSO = Nothing
If c Or R Then CreateObject("WScript.Shell").Popup Space(13) &_
"Выполнено!", 1.7, " Замена дат модификации файлов      ", 4160

Sub Recurse(PFold)
  RPath = Mid(PFold.Self.Path, PLn)
  Dim RPath, Items, i, Name, FName
  Set Items = PFold.Items
  Items.Filter 73920, "*"
  For Each i in Items
    Name = FSO.GetFileName(i.Path)
    If FSO.FileExists(FSO.BuildPath(APath, RPath & "\" & Name)) Then c = 1:_
    AFold.ParseName(FSO.BuildPath(RPath, Name)).ModifyDate = i.ModifyDate
  Next
  If R Then Items.Filter 73888, "*" :_
  For Each i in Items: Recurse i.GetFolder :Next
  Set Items = Nothing
End Sub
Кое-что похожее выкладывал.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Sat Aug 03, 2019 06:51; edited 2 times in total
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Sat Aug 03, 2019 03:35    Post subject: Reply with quote

1. Какие параметры? Пишет, в активной панели ничего не выбрано.
Кстати, какой-то глюк с TCScript: если нажать в любое место TC пока видно всплывающее окно с этим сообщением, TC сворачивается. Так и должно быть?

Добавлено спустя 5 минут:

2. Возможно ли сделать так, чтобы окно "Выполнено" появлялось только при выполненной задаче, а не во всех случаях?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13685
Location: Москва

Post (Separately) Posted: Sat Aug 03, 2019 04:07    Post subject: Reply with quote

1. Зачем спрашиваешь? Их нет. Забыл указать ещё одно условие: TC9+. У тебя какая версия?
А ТС именно сворачивается? Или окно замерзает/пропадает? Глюка быть не должно, т.к. разблокировка стоит перед появлением. На 7 ничего такого не наблюдалось.

2. Что ты называешь всеми случаями?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Sat Aug 03, 2019 04:15    Post subject: Reply with quote

Последняя 8. С пустыми параметрами выдавал ошибку.
Ну появляется окно другой программы.

Ну когда изменение даты не происходит при не совпадении имён. То есть, когда выполнять нечего.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13685
Location: Москва

Post (Separately) Posted: Sat Aug 03, 2019 04:36    Post subject: Reply with quote

На 8 нет смысла. По ныняшним меркам — каменный век.
Окно какой программы? Идущее следом после верхнего?

Ну, даже если совпадений нет, скрипт свою работу сделал, о чём и сигнализирует. И ты точно можешь понять, что процесс не висит, а работа скрипта окончена. Особенно актуально для рекурсии.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Sat Aug 03, 2019 04:53    Post subject: Reply with quote

Окно браузера Opera.
А 9 - космический? Или ещё бронзовый? Смотрел, что там есть. Ничего такого, чтоб прям ах, прорыв.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13685
Location: Москва

Post (Separately) Posted: Sat Aug 03, 2019 05:11    Post subject: Reply with quote

Т.е. браузер открывается, когда закрыт?

Насчёт второго скрипта. Могу сделать, чтобы окно не появлялось в случае полного несовпадения, но без указания /r.

 Век ТС

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Sat Aug 03, 2019 05:17    Post subject: Reply with quote

Нет, открыт. Ещё бы он самостоятельно программы запускал. Это уж точно был бы прорыв. Если бы, конечно, читал мысли и знал, что запускать.

Ладно, обойдусь пока без 1-го скрипта. Потом как-нибудь когда можно будет сразу шагнуть в золотой.
Спасибо.

Со вторым сделай без всплывающего окна. Рекурсией всё равно если буду пользоваться, то редко.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13685
Location: Москва

Post (Separately) Posted: Sat Aug 03, 2019 05:34    Post subject: Reply with quote

Dimsok wrote:
Ещё бы он самостоятельно программы запускал. Это уж точно был бы прорыв.
И что же тут прорывного? В куче скриптов программы как запускали, так и будут запускать. Я спросил "Идущее следом после верхнего?", а в ответ вместо "да" получаю константу: "Окно браузера Opera.". Может, глюк Internet.HHCtrl, мне откуда знать.

Dimsok wrote:
Ладно, обойдусь пока без 1-го скрипта.
А моё зря потраченное время кто оплатит? Я мог бы упростить и под 8-ку, но теперь уже откровенно лень...

Dimsok wrote:
Со вторым сделай без всплывающего окна.
Вообще? А как ты узнаешь, что скрипт сработал? Будешь сортировать по дате или полезешь смотреть в свойства файлов?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Sat Aug 03, 2019 06:06    Post subject: Reply with quote

Quote:
И что же тут прорывного? В куче скриптов программы как запускали, так и будут запускать

Телепатические?

Quote:
Вообще?

Ну так, как ты предположил - в случае несовпадения. Да и зачем куда-то лезть, когда колонка со временем вроде бы имеется.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group