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 Previous  1, 2, 3, 4 ... 9, 10, 11  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sat Sep 08, 2012 17:31    Post subject: Reply with quote

Flasher
У меня вообще чудеса какие-то происходят с этой кнопкой.

1. Под TC 7.02 работает только для файла, явным образом прописанного в кнопке, например вот так:
setfilefoldertime %V "d:\testfile.txt" "01-01-2100 00:00:00" "31-01-2100 1:22:33"
Для выделенного (текущего) файла под курсором - не работает.
А точно синтаксис описания файла ("" "") правильный?

2. Из-под TC 8.01 не работает вообще, хотя ничего не меняю, просто копирую работающую кнопку из 7.02.

3. С присваиваемым временем вроде бы проблем нет, ничего никуда не сдвигается.
Правда, есть одна странность: секунды округляются до четных значений. На разделе с FAT так и должно быть, но почему это происходит на разделе NTFS - загадка. Но это - баг (или фича??) самого Nircmd.exe, к тоталу отношения не имеет.

А что такое "открыт"? Это не "access time" случайно? Может, мы про разные атрибуты говорим?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Sep 08, 2012 17:43    Post subject: Reply with quote

oshizelly
1. Советую почитать справку ТС на предмет параметров. %V в версии 7.02 не поддерживается. %V и "d:\testfile.txt" писать вместе бессмысленно.
У меня синтаксис правильный.
2. А как же будет работать, если копируется неверная кнопка вместо моей?
3. У меня с секундами проблем нет. Только с часами.

"Открыт" отражает время последнего доступа. Вполне логичное название.
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sat Sep 08, 2012 19:13    Post subject: Reply with quote

Flasher
Flasher wrote:
А как же будет работать, если копируется неверная кнопка вместо моей?

Да нет, я с TC 8.01 как раз сначала пробовал оригинальный синтаксис вот так:
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08"
Не работает для выделенного файла Sad
Для явным образом прописанного файла - работает (если убрать параметр %V)

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



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

Post (Separately) Posted: Sat Sep 08, 2012 19:26    Post subject: Reply with quote

oshizelly wrote:
Да нет, я с TC 8.01 как раз сначала пробовал оригинальный синтаксис вот так:
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08"
Оригинальный синтаксис написан в моей кнопке. Не надо никаких самостоятельных экспериментов. Мы так до следующей недели протянем..

oshizelly wrote:
Сдвиг на 1 час - это явно что-то с поясным временем связано.
Откуда тут связь с часовыми поясами, если мы явно задаём конкретное время?
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sat Sep 08, 2012 20:02    Post subject: Reply with quote

Flasher
Flasher wrote:
Оригинальный синтаксис написан в моей кнопке. Не надо никаких самостоятельных экспериментов.

Так я же оттуда и скопировал. В чем отличие от указанного там синтаксиса - не понимаю Rolling Eyes Разве что от себя добавил второй параметр на изменение времени модификации, так это точно на скорость не влияет, без него тоже не работает.


Flasher wrote:
Откуда тут связь с часовыми поясами, если мы явно задаём конкретное время?

Не знаю, откуда. Это просто гипотеза. Я мог бы долго рассуждать и аргументировать, почему я считаю такую штуку возможной... Но не проще ли проверить? Это вряд ли займёт больше 2 минут.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Sep 08, 2012 20:11    Post subject: Reply with quote

oshizelly wrote:
В чем отличие от указанного там синтаксиса - не понимаю
В общем-то, результат будет аналогичный, но последний параметр ничего не даст, он будет проигнорирован. Даты всего 3, а не 4.

А битность у системы не 64, случаем?


Last edited by Flasher on Sat Sep 08, 2012 20:45; edited 1 time in total
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sat Sep 08, 2012 20:39    Post subject: Reply with quote

Flasher wrote:
А битность у ТС не 64, случаем?

Нет, TC 8.01 x32. Кстати, ось - Win XP 32, хотя это вряд ли имеет значение.

Flasher wrote:
, но последний параметр ничего не даст, он будет проигнорирован. Даты всего 3, а не 4.

Конечно, три! Но у тебя в образце вообще только одна дата - это create time (дата создания). В моем дополненном примере - две даты: дата создания и дата модификации. А если еще задействовать и дату last access, которую гениальный переводчик окон назвал "датой открытия" (вообще-то оно "время последнего доступа"), то будет вот так:
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08" "01-01-3100 09:09:09"

:off:
Навеяло:
У чукчи спрашивают, что дала ему советская власть.
- Очень много дала, однако! Раньше у чукчи было два чувства: чувство голода и чувство холода. Сейчас у него их три: чувство голода, чувство холода и чувство глубокого морального удовлетворения.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Sep 08, 2012 20:42    Post subject: Reply with quote

oshizelly wrote:
Нет, TC 8.01 x32. Кстати, ось - Win XP 32, хотя это вряд ли имеет значение.
Пардон, я про битность системы хотел узнать. У меня семёрка. Значение может и иметь.
oshizelly wrote:
Конечно, три! Но у тебя в образце вообще только одна дата - это create time (дата создания).
Не создания, а доступа (Accessed), в том то и дело. Для того пустые кавычки и ставятся, чтобы проигнорировать первые две. Это общепринятый синтаксис.
oshizelly wrote:
то будет вот так
Глупости. Тут тогда пустые кавычки зачем вообще? Confused См. справку по nircmd.

LonerD, ты где там? Помогать будешь?


Last edited by Flasher on Sat Sep 08, 2012 21:27; edited 1 time in total
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sat Sep 08, 2012 21:10    Post subject: Reply with quote

Flasher
Черт, все, разобрался наконец, почему у меня для файла под курсором не работало. Рассказывать не буду, чтобы не стать посмешищем всего интернета. Embarassed Ограничусь констатацией, что эта часть проблемы решена.

Flasher wrote:
Не создания, а доступа, в том то и дело.

Created - время создания файла/папки
Modified - время модификации
Last Acccessed - время последнего доступа
Так вот примерно...

Кстати, важное замечание: при вызове системного диалога свойств файла (properties) время последнего доступа (которое в русском переводе "открыт") может обновляться на текущее. Наверное, потому что при вызове этого диалога система как раз и осуществляет доступ к файлу для считывания свойств файла... А может и не меняться. От чего это зависит - не знаю.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Sep 08, 2012 21:17    Post subject: Reply with quote

oshizelly wrote:
Рассказывать не буду, чтобы не стать посмешищем всего интернета.
Если всего, то ты многое упускаешь, это ж какой пиар (на этом можно состояние сколотить). Wink
oshizelly wrote:
Так вот примерно..
Я не про перевод, а про то, что идёт в команде.
По переводу:
Только дата и время. А так всё верно. Урок английского для второго класса. Wink
И, кстати, в мануале написано "Accessed Date", а не "Last Acccessed".
oshizelly wrote:
Кстати, важное замечание
На 7 такого нет..
Может, тогда ну его, доступ?
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sat Sep 08, 2012 21:48    Post subject: Reply with quote

Flasher wrote:
Может, тогда ну его, доступ?

Как по мне, так можно без него обойтись. Реально важны время создания и модификации. Very Happy
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Sep 08, 2012 22:58    Post subject: Reply with quote

Ну, вообще, конечно, не помешает. Пробуйте.

Code:
'==================================================================================
' Изменение даты и времени выбранных файлов и папок активной панели на дату и время
' указанного файла/папки с возможностью рекурсивной обработки содержимого папок

' Параметры: "<путь к файлу>" %WL <индекс замены> <флаг рекурсии: 1>

' Путь к файлу: %V (активной панели) | %T%M (пассивной панели)

' Индекс замены принимает следующие значения:
' 1 - даты создания
' 2 - даты модификации
' 3 - даты последнего открытия
' 4 - даты создания и модификации
' 5 - даты создания и последнего открытия
' 6 - даты модификации и последнего открытия
' 7 - даты модификации, создания и последнего открытия

' Примеры параметров:  %T%M %WL 2  |  %V %WL 7  |  "C:\Тест" %WL 4 1

' Автор: Flasher ©
'================================= Путь к NirCmd ==================================
Nircmd = """%COMMANDER_PATH%\Utils\nircmd\nircmd.exe"""
'==================================================================================
With WScript.Arguments
  C = .Count : If C = 0 Then Quit
  File = .Item(0) : List = .Item(1) : Count = .Item(2)
End With : L = vbNewLine
If Not IsNumeric(Count) Then Msg
If Count < 1 Or Count > 7 Then Msg
Sub Msg
  MsgBox "Недопустимый индекс замены!"&L&L&"Смотрите описание.", 48, Space(30) & "Ошибка"
  WScript.Quit
End Sub

Set FSO   = CreateObject("Scripting.FileSystemObject")
Dim WSH : Set WSH = CreateObject("Wscript.Shell")
Set Shell = CreateObject("Shell.Application")

If FSO.FileExists(File) Then Set File  = FSO.GetFile(File) Else Set File = FSO.GetFolder(File)
DC = File.DateCreated : DM = File.DateLastModified : DA = File.DateLastAccessed
Repl DC : Repl DM : Repl DA : Set File = Nothing

Sub Repl(DT)
  Dy = Day(DT) : Mh = Month(DT) : Yr = Year(DT) : Hr = Hour(DT) : Mn = Minute(DT) : Sc = Second(DT)
  Num(Dy)(Mh)(Yr)(Hr)(Mn)(Sc)(Sc)
  If InStrRev(DT, "P") Then : If Hr < 12 Then Hr = Hr + 12 : End If
  DT = """" & Dy & "-" & Mh & "-" & Yr & " " & Hr & ":" & Mn & ":" & Sc & """"
End Sub

Function Num(DateT)
  If Len(DateT) = 1 Then DateT = "0" & DateT
  Set Num = GetRef("Num")
End Function

Select Case Count
  Case 1 P = DC
  Case 2 P = """"" " & DM
  Case 3 P = """"" """" " & DA
  Case 4 P = DC & " " & DM
  Case 5 P = DC & " """" " & DA
  Case 6 P = """"" " & DM & " " & DA
  Case 7 P = DC & " " & DM & " " & DA
End Select

For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, L)
  If FSO.FolderExists(F) Then
    F = Left(F, Len(F) - 1) : ForFile F, P
    If C = 4 Then : Set F = FSO.GetFolder(F) : ForFolder F, P : End If
  Else ForFile F, P : End If
Next : Set FSO = Nothing : Set WSH = Nothing : Set Shell = Nothing : WScript.Quit

Sub ForFolder(Fd, Par)
  For Each Fl In Fd.SubFolders : ForFile Fl, Par : ForFolder Fl, Par : Next
  For Each Fl In Fd.Files      : ForFile Fl, Par : Next
End Sub
Sub ForFile(FF, PP) : WSH.Run Nircmd & " setfilefoldertime """ & FF & """ " & PP, 0, True : End Sub


Last edited by Flasher on Sun Sep 16, 2012 17:34; edited 5 times in total
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sat Sep 08, 2012 23:12    Post subject: Reply with quote

Flasher wrote:
Пробуйте.

Все тот же наивный вопрос чайника: чего с этим делать и куда сувать? По внешнему виду ясно, что это какой-то скрипт. Но для скрипта ведь требуется какой-то обработчик? Rolling Eyes

Flasher wrote:
Изменение дат и времени выбранных файлов активной панели

А почему - "активной"? Это не опечатка? Для сравнения: утилита Volniy копировала значения атрибутов времени с выделенного (текущего( файла на активной панели на выделенный файл на пассивной панели. А тут какой алгоритм? Надо файлы предварительно выделять явным образом?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Sep 08, 2012 23:20    Post subject: Reply with quote

oshizelly
Сохрани с расширением vbs, а дальше по памятке подфорума.

Активной, потому что так проще (не надо регистрировать доп. ActiveX-компонент), чтобы прочесть выбранный список другой панели.
Для одного файла явное указание/выделение, естественно, не требуется. Чтобы видеть, на каком курсоре стоит файл в пассивной панели, используй соотв. настройку для TC (wincmd.ini либо TwinKey).
oshizelly wrote:
А тут какой алгоритм? Надо файлы предварительно выделять явным образом?
В шапке скрипта приведёны примеры указания файла (пассивная/активная панель), с которого читаются даты.
Да, естественно, не только выбранных файлов, но и папок, забыл в названии написать.

Add: убрал лишний параметр, кое-что исправил.
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Sun Sep 09, 2012 13:11    Post subject: Reply with quote

Flasher
Сделал, как описано вот здесь http://forum.wincmd.ru/viewtopic.php?t=14282 , все работает!! Я счастлив до полного изнеможения! Спасибо!

Flasher wrote:
Активной, потому что так проще (не надо регистрировать доп. ActiveX-компонент), чтобы прочесть выбранный список другой панели... В шапке скрипта приведёны примеры указания файла (пассивная/активная панель), с которого читаются даты.

Прошу прощения, не понял. Так можно скрипт так настроить, чтобы в качестве источника при копировании значений штампом времени использовался файл в активной панели и копировалось на файл в пассивной? Я пробовал несколько вариантов, даже перечел раздел справки по параметрам кнопок, включая %V и %WL, но яснее не стало Crying or Very sad Пробовал менять параметры местами вот так
%WL %T%M 7
и вот так
%V %T%M 7
но не работает...

Flasher wrote:
Чтобы видеть, на каком курсоре стоит файл в пассивной панели, используй соотв. настройку для TC (wincmd.ini либо TwinKey).

Про TwinKey знаю, что умеет подсвечивать текущий файл в пассивной панели, но до сих пор этой утилитой не пользовался. А как то же самое сделать штатными средствами TC? Very Happy
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 Previous  1, 2, 3, 4 ... 9, 10, 11  Next
Page 3 of 11

 
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