Автоматизация переноса атрибутов и времени изменения файлов
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
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" случайно? Может, мы про разные атрибуты говорим?
У меня вообще чудеса какие-то происходят с этой кнопкой.
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" случайно? Может, мы про разные атрибуты говорим?
oshizelly
1. Советую почитать справку ТС на предмет параметров. %V в версии 7.02 не поддерживается. %V и "d:\testfile.txt" писать вместе бессмысленно.
У меня синтаксис правильный.
2. А как же будет работать, если копируется неверная кнопка вместо моей?
3. У меня с секундами проблем нет. Только с часами.
"Открыт" отражает время последнего доступа. Вполне логичное название.
1. Советую почитать справку ТС на предмет параметров. %V в версии 7.02 не поддерживается. %V и "d:\testfile.txt" писать вместе бессмысленно.
У меня синтаксис правильный.
2. А как же будет работать, если копируется неверная кнопка вместо моей?
3. У меня с секундами проблем нет. Только с часами.
"Открыт" отражает время последнего доступа. Вполне логичное название.
Flasher
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08"
Не работает для выделенного файла
Для явным образом прописанного файла - работает (если убрать параметр %V)
Сдвиг на 1 час - это явно что-то с поясным временем связано. Может, попробовать в порядке эксперимента изменить в настройках системы часовой пояс или снять галку автоматического перехода на летнее время?
Да нет, я с TC 8.01 как раз сначала пробовал оригинальный синтаксис вот так:Flasher писал(а):А как же будет работать, если копируется неверная кнопка вместо моей?
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08"
Не работает для выделенного файла
Для явным образом прописанного файла - работает (если убрать параметр %V)
Сдвиг на 1 час - это явно что-то с поясным временем связано. Может, попробовать в порядке эксперимента изменить в настройках системы часовой пояс или снять галку автоматического перехода на летнее время?
Оригинальный синтаксис написан в моей кнопке. Не надо никаких самостоятельных экспериментов. Мы так до следующей недели протянем..oshizelly писал(а):Да нет, я с TC 8.01 как раз сначала пробовал оригинальный синтаксис вот так:
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08"
Откуда тут связь с часовыми поясами, если мы явно задаём конкретное время?oshizelly писал(а):Сдвиг на 1 час - это явно что-то с поясным временем связано.
Flasher
Разве что от себя добавил второй параметр на изменение времени модификации, так это точно на скорость не влияет, без него тоже не работает.
Так я же оттуда и скопировал. В чем отличие от указанного там синтаксиса - не понимаюFlasher писал(а):Оригинальный синтаксис написан в моей кнопке. Не надо никаких самостоятельных экспериментов.
Не знаю, откуда. Это просто гипотеза. Я мог бы долго рассуждать и аргументировать, почему я считаю такую штуку возможной... Но не проще ли проверить? Это вряд ли займёт больше 2 минут.Flasher писал(а):Откуда тут связь с часовыми поясами, если мы явно задаём конкретное время?
В общем-то, результат будет аналогичный, но последний параметр ничего не даст, он будет проигнорирован. Даты всего 3, а не 4.oshizelly писал(а):В чем отличие от указанного там синтаксиса - не понимаю
А битность у системы не 64, случаем?
Последний раз редактировалось Flasher Сб сен 08, 2012 20:45, всего редактировалось 1 раз.
Нет, TC 8.01 x32. Кстати, ось - Win XP 32, хотя это вряд ли имеет значение.Flasher писал(а):А битность у ТС не 64, случаем?
Конечно, три! Но у тебя в образце вообще только одна дата - это create time (дата создания). В моем дополненном примере - две даты: дата создания и дата модификации. А если еще задействовать и дату last access, которую гениальный переводчик окон назвал "датой открытия" (вообще-то оно "время последнего доступа"), то будет вот так:Flasher писал(а):, но последний параметр ничего не даст, он будет проигнорирован. Даты всего 3, а не 4.
setfilefoldertime %V "" "" "01-01-2012 08:08:08" "01-01-2012 08:08:08" "01-01-3100 09:09:09"
:off:
Навеяло:
У чукчи спрашивают, что дала ему советская власть.
- Очень много дала, однако! Раньше у чукчи было два чувства: чувство голода и чувство холода. Сейчас у него их три: чувство голода, чувство холода и чувство глубокого морального удовлетворения.
Пардон, я про битность системы хотел узнать. У меня семёрка. Значение может и иметь.oshizelly писал(а):Нет, TC 8.01 x32. Кстати, ось - Win XP 32, хотя это вряд ли имеет значение.
Не создания, а доступа (Accessed), в том то и дело. Для того пустые кавычки и ставятся, чтобы проигнорировать первые две. Это общепринятый синтаксис.oshizelly писал(а):Конечно, три! Но у тебя в образце вообще только одна дата - это create time (дата создания).
Глупости. Тут тогда пустые кавычки зачем вообще?oshizelly писал(а):то будет вот так
LonerD, ты где там? Помогать будешь?

Последний раз редактировалось Flasher Сб сен 08, 2012 21:27, всего редактировалось 1 раз.
Flasher
Черт, все, разобрался наконец, почему у меня для файла под курсором не работало. Рассказывать не буду, чтобы не стать посмешищем всего интернета.
Ограничусь констатацией, что эта часть проблемы решена.
Modified - время модификации
Last Acccessed - время последнего доступа
Так вот примерно...
Кстати, важное замечание: при вызове системного диалога свойств файла (properties) время последнего доступа (которое в русском переводе "открыт") может обновляться на текущее. Наверное, потому что при вызове этого диалога система как раз и осуществляет доступ к файлу для считывания свойств файла... А может и не меняться. От чего это зависит - не знаю.
Черт, все, разобрался наконец, почему у меня для файла под курсором не работало. Рассказывать не буду, чтобы не стать посмешищем всего интернета.
Created - время создания файла/папкиFlasher писал(а):Не создания, а доступа, в том то и дело.
Modified - время модификации
Last Acccessed - время последнего доступа
Так вот примерно...
Кстати, важное замечание: при вызове системного диалога свойств файла (properties) время последнего доступа (которое в русском переводе "открыт") может обновляться на текущее. Наверное, потому что при вызове этого диалога система как раз и осуществляет доступ к файлу для считывания свойств файла... А может и не меняться. От чего это зависит - не знаю.
Если всего, то ты многое упускаешь, это ж какой пиар (на этом можно состояние сколотить).oshizelly писал(а):Рассказывать не буду, чтобы не стать посмешищем всего интернета.
Я не про перевод, а про то, что идёт в команде.oshizelly писал(а):Так вот примерно..
По переводу:
Только дата и время. А так всё верно. Урок английского для второго класса.
И, кстати, в мануале написано "Accessed Date", а не "Last Acccessed".
На 7 такого нет..oshizelly писал(а):Кстати, важное замечание
Может, тогда ну его, доступ?
Ну, вообще, конечно, не помешает. Пробуйте.
Код: Выделить всё
'==================================================================================
' Изменение даты и времени выбранных файлов и папок активной панели на дату и время
' указанного файла/папки с возможностью рекурсивной обработки содержимого папок
' Параметры: "<путь к файлу>" %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
Последний раз редактировалось Flasher Вс сен 16, 2012 17:34, всего редактировалось 5 раз.
Все тот же наивный вопрос чайника: чего с этим делать и куда сувать? По внешнему виду ясно, что это какой-то скрипт. Но для скрипта ведь требуется какой-то обработчик?Flasher писал(а):Пробуйте.
А почему - "активной"? Это не опечатка? Для сравнения: утилита Volniy копировала значения атрибутов времени с выделенного (текущего( файла на активной панели на выделенный файл на пассивной панели. А тут какой алгоритм? Надо файлы предварительно выделять явным образом?Flasher писал(а):Изменение дат и времени выбранных файлов активной панели
oshizelly
Сохрани с расширением vbs, а дальше по памятке подфорума.
Активной, потому что так проще (не надо регистрировать доп. ActiveX-компонент), чтобы прочесть выбранный список другой панели.
Для одного файла явное указание/выделение, естественно, не требуется. Чтобы видеть, на каком курсоре стоит файл в пассивной панели, используй соотв. настройку для TC (wincmd.ini либо TwinKey).
Да, естественно, не только выбранных файлов, но и папок, забыл в названии написать.
Add: убрал лишний параметр, кое-что исправил.
Сохрани с расширением vbs, а дальше по памятке подфорума.
Активной, потому что так проще (не надо регистрировать доп. ActiveX-компонент), чтобы прочесть выбранный список другой панели.
Для одного файла явное указание/выделение, естественно, не требуется. Чтобы видеть, на каком курсоре стоит файл в пассивной панели, используй соотв. настройку для TC (wincmd.ini либо TwinKey).
В шапке скрипта приведёны примеры указания файла (пассивная/активная панель), с которого читаются даты.oshizelly писал(а):А тут какой алгоритм? Надо файлы предварительно выделять явным образом?
Да, естественно, не только выбранных файлов, но и папок, забыл в названии написать.
Add: убрал лишний параметр, кое-что исправил.
Flasher
Сделал, как описано вот здесь http://forum.wincmd.ru/viewtopic.php?t=14282 , все работает!! Я счастлив до полного изнеможения! Спасибо!
Пробовал менять параметры местами вот так
%WL %T%M 7
и вот так
%V %T%M 7
но не работает...

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

Прошу прощения, не понял. Так можно скрипт так настроить, чтобы в качестве источника при копировании значений штампом времени использовался файл в активной панели и копировалось на файл в пассивной? Я пробовал несколько вариантов, даже перечел раздел справки по параметрам кнопок, включая %V и %WL, но яснее не сталоFlasher писал(а):Активной, потому что так проще (не надо регистрировать доп. ActiveX-компонент), чтобы прочесть выбранный список другой панели... В шапке скрипта приведёны примеры указания файла (пассивная/активная панель), с которого читаются даты.
%WL %T%M 7
и вот так
%V %T%M 7
но не работает...
Про TwinKey знаю, что умеет подсвечивать текущий файл в пассивной панели, но до сих пор этой утилитой не пользовался. А как то же самое сделать штатными средствами TC?Flasher писал(а):Чтобы видеть, на каком курсоре стоит файл в пассивной панели, используй соотв. настройку для TC (wincmd.ini либо TwinKey).