View previous topic :: View next topic |
Author |
Message |
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sat Sep 08, 2012 17:31 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 08, 2012 17:43 Post subject: |
|
|
oshizelly
1. Советую почитать справку ТС на предмет параметров. %V в версии 7.02 не поддерживается. %V и "d:\testfile.txt" писать вместе бессмысленно.
У меня синтаксис правильный.
2. А как же будет работать, если копируется неверная кнопка вместо моей?
3. У меня с секундами проблем нет. Только с часами.
"Открыт" отражает время последнего доступа. Вполне логичное название. |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sat Sep 08, 2012 19:13 Post subject: |
|
|
Flasher
Flasher wrote: | А как же будет работать, если копируется неверная кнопка вместо моей? |
Да нет, я с TC 8.01 как раз сначала пробовал оригинальный синтаксис вот так:
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08"
Не работает для выделенного файла
Для явным образом прописанного файла - работает (если убрать параметр %V)
Сдвиг на 1 час - это явно что-то с поясным временем связано. Может, попробовать в порядке эксперимента изменить в настройках системы часовой пояс или снять галку автоматического перехода на летнее время? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 08, 2012 19:26 Post subject: |
|
|
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 |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sat Sep 08, 2012 20:02 Post subject: |
|
|
Flasher
Flasher wrote: | Оригинальный синтаксис написан в моей кнопке. Не надо никаких самостоятельных экспериментов. |
Так я же оттуда и скопировал. В чем отличие от указанного там синтаксиса - не понимаю Разве что от себя добавил второй параметр на изменение времени модификации, так это точно на скорость не влияет, без него тоже не работает.
Flasher wrote: | Откуда тут связь с часовыми поясами, если мы явно задаём конкретное время? |
Не знаю, откуда. Это просто гипотеза. Я мог бы долго рассуждать и аргументировать, почему я считаю такую штуку возможной... Но не проще ли проверить? Это вряд ли займёт больше 2 минут. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 08, 2012 20:11 Post subject: |
|
|
oshizelly wrote: | В чем отличие от указанного там синтаксиса - не понимаю | В общем-то, результат будет аналогичный, но последний параметр ничего не даст, он будет проигнорирован. Даты всего 3, а не 4.
А битность у системы не 64, случаем?
Last edited by Flasher on Sat Sep 08, 2012 20:45; edited 1 time in total |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sat Sep 08, 2012 20:39 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 08, 2012 20:42 Post subject: |
|
|
oshizelly wrote: | Нет, TC 8.01 x32. Кстати, ось - Win XP 32, хотя это вряд ли имеет значение. | Пардон, я про битность системы хотел узнать. У меня семёрка. Значение может и иметь.
oshizelly wrote: | Конечно, три! Но у тебя в образце вообще только одна дата - это create time (дата создания). | Не создания, а доступа (Accessed), в том то и дело. Для того пустые кавычки и ставятся, чтобы проигнорировать первые две. Это общепринятый синтаксис.
oshizelly wrote: | то будет вот так | Глупости. Тут тогда пустые кавычки зачем вообще? См. справку по nircmd.
LonerD, ты где там? Помогать будешь?
Last edited by Flasher on Sat Sep 08, 2012 21:27; edited 1 time in total |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sat Sep 08, 2012 21:10 Post subject: |
|
|
Flasher
Черт, все, разобрался наконец, почему у меня для файла под курсором не работало. Рассказывать не буду, чтобы не стать посмешищем всего интернета. Ограничусь констатацией, что эта часть проблемы решена.
Flasher wrote: | Не создания, а доступа, в том то и дело. |
Created - время создания файла/папки
Modified - время модификации
Last Acccessed - время последнего доступа
Так вот примерно...
Кстати, важное замечание: при вызове системного диалога свойств файла (properties) время последнего доступа (которое в русском переводе "открыт") может обновляться на текущее. Наверное, потому что при вызове этого диалога система как раз и осуществляет доступ к файлу для считывания свойств файла... А может и не меняться. От чего это зависит - не знаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 08, 2012 21:17 Post subject: |
|
|
oshizelly wrote: | Рассказывать не буду, чтобы не стать посмешищем всего интернета. | Если всего, то ты многое упускаешь, это ж какой пиар (на этом можно состояние сколотить).
oshizelly wrote: | Так вот примерно.. | Я не про перевод, а про то, что идёт в команде.
По переводу:
Только дата и время. А так всё верно. Урок английского для второго класса.
И, кстати, в мануале написано "Accessed Date", а не "Last Acccessed".
oshizelly wrote: | Кстати, важное замечание | На 7 такого нет..
Может, тогда ну его, доступ? |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sat Sep 08, 2012 21:48 Post subject: |
|
|
Flasher wrote: | Может, тогда ну его, доступ? |
Как по мне, так можно без него обойтись. Реально важны время создания и модификации. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 08, 2012 22:58 Post subject: |
|
|
Ну, вообще, конечно, не помешает. Пробуйте.
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 |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sat Sep 08, 2012 23:12 Post subject: |
|
|
Все тот же наивный вопрос чайника: чего с этим делать и куда сувать? По внешнему виду ясно, что это какой-то скрипт. Но для скрипта ведь требуется какой-то обработчик?
Flasher wrote: | Изменение дат и времени выбранных файлов активной панели |
А почему - "активной"? Это не опечатка? Для сравнения: утилита Volniy копировала значения атрибутов времени с выделенного (текущего( файла на активной панели на выделенный файл на пассивной панели. А тут какой алгоритм? Надо файлы предварительно выделять явным образом? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 08, 2012 23:20 Post subject: |
|
|
oshizelly
Сохрани с расширением vbs, а дальше по памятке подфорума.
Активной, потому что так проще (не надо регистрировать доп. ActiveX-компонент), чтобы прочесть выбранный список другой панели.
Для одного файла явное указание/выделение, естественно, не требуется. Чтобы видеть, на каком курсоре стоит файл в пассивной панели, используй соотв. настройку для TC (wincmd.ini либо TwinKey).
oshizelly wrote: | А тут какой алгоритм? Надо файлы предварительно выделять явным образом? | В шапке скрипта приведёны примеры указания файла (пассивная/активная панель), с которого читаются даты.
Да, естественно, не только выбранных файлов, но и папок, забыл в названии написать.
Add: убрал лишний параметр, кое-что исправил. |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Sun Sep 09, 2012 13:11 Post subject: |
|
|
Flasher
Сделал, как описано вот здесь http://forum.wincmd.ru/viewtopic.php?t=14282 , все работает!! Я счастлив до полного изнеможения! Спасибо!
Flasher wrote: | Активной, потому что так проще (не надо регистрировать доп. ActiveX-компонент), чтобы прочесть выбранный список другой панели... В шапке скрипта приведёны примеры указания файла (пассивная/активная панель), с которого читаются даты. |
Прошу прощения, не понял. Так можно скрипт так настроить, чтобы в качестве источника при копировании значений штампом времени использовался файл в активной панели и копировалось на файл в пассивной? Я пробовал несколько вариантов, даже перечел раздел справки по параметрам кнопок, включая %V и %WL, но яснее не стало Пробовал менять параметры местами вот так
%WL %T%M 7
и вот так
%V %T%M 7
но не работает...
Flasher wrote: | Чтобы видеть, на каком курсоре стоит файл в пассивной панели, используй соотв. настройку для TC (wincmd.ini либо TwinKey). |
Про TwinKey знаю, что умеет подсвечивать текущий файл в пассивной панели, но до сих пор этой утилитой не пользовался. А как то же самое сделать штатными средствами TC? |
|
Back to top |
|
|
|
|
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
|