Автоматизация переноса атрибутов и времени изменения файлов
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: Автоматизация переноса атрибутов и времени изменения файлов Author: oshizelly PostPosted: Tue Sep 04, 2012 14:33
    —
В TC можно "взять" атрибуты файла на активной панели и присвоить их выделенному файлу (или файлам) на пассивной панели. Но делать это долго и неудобно, особенно с клавиатуры: вызвать диалог изменения атрибутов и долго и мучительно прыгать там табом между разными полями ввода и кнопками (поскольку акселераторов не предусмотрено). Та ещё морока...

В 2004-м году уважаемый Volniy написал замечательную утилитку CopyAttr.exe (http://volniy.nm.ru/copyattr.zip) размером 4 KB, которая по такому алгоритму копировала время создания и модификации файлов. Я приделал к ней хоткей через пользовательские команды, и восемь лет с благодарностью вспоминал автора. Однако TC за это время научился работать с юникодными именами файлов, а эта утилита - нет... Опять же появился аналогичный штатный функционал в самом TC, хоть и крайне неудобный в использовании.

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

Заранее спасибо!


Last edited by oshizelly on Wed Sep 05, 2012 21:07; edited 2 times in total

#2:  Author: FlasherLocation: Москва PostPosted: Tue Sep 04, 2012 15:57
    —
Достаточно просто. Вечером могу сделать.

#3:  Author: LonerDLocation: Донецк PostPosted: Tue Sep 04, 2012 16:19
    —
oshizelly
Переложите, пожалуйста, утилитку - указанного сайта уже не существует.

Quote:
Достаточно просто. Вечером могу сделать.

У меня тоже в последнее время созрело желание заиметь такую утилитку или скрипт, но ещё не успел зареквестить Smile
Просьба учесть также возможность копирования не только атрибутов как таковых, но и даты изменения файла, а также переноса атрибутов/времени с указанного файла на несколько выделенных файлов в противоположной панели.

Неплохо бы предусмотреть копирование атрибутов с файла под курсором на все выделенные файлы, которые находятся в той же самой панели (если файлы лежит рядом, то не очень удобно и не очень логично открывать новую панель ради перенесения атрибутов).

#4:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue Sep 04, 2012 16:32
    —
LonerD wrote:
Переложите, пожалуйста, утилитку - указанного сайта уже не существует.

Интересно, с чего же я её тогда несколько минут назад благополучно скачал. Wink

#5:  Author: oshizelly PostPosted: Tue Sep 04, 2012 16:52
    —
LonerD wrote:
Просьба учесть также возможность копирования не только атрибутов как таковых, но и даты изменения файла

Собственно, я тоже как раз именно копирование даты просил. И утилита Volniy именно это делала. Да и вряд ли кому-то понадобится копировать с одного файла на другой, например, атрибут System или Hidden Laughing

Остальные просьбы тоже поддерживаю.

#6:  Author: LonerDLocation: Донецк PostPosted: Tue Sep 04, 2012 17:22
    —
Quote:
Интересно, с чего же я её тогда несколько минут назад благополучно скачал.

Это тонкий намёк чтобы я сам прошёл квест? Smile
Я его прошёл.
Просто кликнуть на ссылку в первом посте и скачать, разумеется, не получается - открывается сайт qip.ru и ошибка 404. "Сохранить как" в браузере - сохраняет htm-страничку.
А вот если скопировать адрес ссылки, потом вставить его в новом окошке, - то файл скачивается. Хитро придумано, хотя и не понятно для чего такая хитрость.

#7:  Author: FlasherLocation: Москва PostPosted: Tue Sep 04, 2012 18:09
    —
LonerD wrote:
Просьба учесть также возможность копирования не только атрибутов как таковых, но и даты изменения файла, а также переноса атрибутов/времени с указанного файла на несколько выделенных файлов в противоположной панели.
Да в голове сразу такая мысль промелькнула. Не забывай, что для двух панелей хелпер нужен.
LonerD wrote:
Неплохо бы предусмотреть копирование атрибутов с файла под курсором на все выделенные файлы, которые находятся в той же самой панели (если файлы лежит рядом, то не очень удобно и не очень логично открывать новую панель ради перенесения атрибутов).
Не понял написанное в скобках. Зачем открывать новую панель?

Если есть свободное время, можешь пока потренироваться.

#8:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue Sep 04, 2012 18:25
    —
LonerD
У меня, когда я отвечал с работы, как-то квест попроще вышел: именно что просто щёлкнул по ссылке и скачал через Download Master. А вот сейчас так не выходит, надо действительно копировать адрес.
P.S. А вот сейчас опять нормально закачивается... Так что в общем и целом ссылка рабочая.

#9:  Author: LonerDLocation: Донецк PostPosted: Tue Sep 04, 2012 21:16
    —
Quote:
Не понял написанное в скобках. Зачем открывать новую панель?

В запросе была фраза: заданные атрибуты... переносятся с выделенного файла в активной панели на выделенный файл в пассивной панели.

Но если два файла лежат в рядом в одном каталоге, то для такого переноса (с активной панели на пассивную), получается, нужно открывать новую вкладку с этим же каталогом на другой панели. А это уже не очень удобно Rolling Eyes

Я же прошу реализовать возможность переносить атрибуты не только на выделенные файлы пассивной панели, но и на выделенные файлы активной панели (то есть когда файл, с которого считываются атрибуты и файлы, на которые атрибуты переносятся, находятся на одной панели).

#10:  Author: FlasherLocation: Москва PostPosted: Tue Sep 04, 2012 21:41
    —
LonerD
Да я прекрасно понял, о чём ты просишь. Я не понял необходимости открывать новую вкладку в другой панели. Зачем открывать, если уже открыто то, что нужно? По крайней мере мне это так представляется. А выбор панели - это вообще не проблема. Всё будет.

Насчёт сегодня уже не обещаю (вернусь под ночь).

#11:  Author: Tol!kLocation: Арзамас PostPosted: Tue Sep 04, 2012 22:43
    —
Code:
@echo off &setlocal enableextensions
::   Выделенным файлам присвоить атрибуты файла с пассивной панели
::   Параметры:   "%WL" %T%M
::   Автор:   Tol!k

call :attr "%~2"
for /f "delims=" %%f in ('type "%~1"') do attrib %#% "%%f"
goto :eof

:attr
for /f "delims=" %%a in ('attrib "%~1"') do set "attr=%%a"
setlocal enabledelayedexpansion
set "attr=!attr:~0,10!"
for /l %%i in (0,1,9) do set "#=!#! +!attr:~%%i,1! "
endlocal &set "#=%#: + =%"
goto :eof

#12:  Author: oshizelly PostPosted: Wed Sep 05, 2012 11:04
    —
Tol!k
Нельзя ли для менее продвинутых юзеров хотя бы парой слов пояснить, что с этим батником делать? И каковы ожидаемые результаты? На всякий случай обращаю внимание, что речь идёт не столько об атрибутах файла в классическом понимании (A/R/H/S/F), сколько о переносе времени создания и модификации файла на другой файл.

#13:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Sep 05, 2012 15:31
    —
2oshizelly
1) Скопировать это в буфер:
Code:
TOTALCMD#BAR#DATA
c:\user\Batches\CopyAttr.bat
"%WL" %T%M
E:\Windows\System32\imageres.dll,-68
CopyAttr (Выделенным файлам присвоить атрибуты файла с %T)
c:\user\Batches\

-1
2) Навести курсор на свободное место на панели;
3) Правая кнопка мыши и "Paste";
4) Навести крысу на появившуюся кнопку и в меню по правой кнопке выбрать "Change...";
5) Отредактировать путь к батнику, оный к иконке, и описание;
6) Батник Tol!k'а сохранить по соответствующему пути.
7) Установить курсор на файл-образец на пассивной панели;
8) Выделить файл(ы) на активной панели;
9) Нажать кнопку.

Проверил - работает. Tol!k, как всегда, красавец.

#14:  Author: FlasherLocation: Москва PostPosted: Wed Sep 05, 2012 17:04
    —
Вахмурка wrote:
Проверил - работает.
Что работает? Это?:
oshizelly wrote:
заранее заданные атрибуты (скажем, дата создания и дата модификации файла) переносятся

#15:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Sep 05, 2012 17:23
    —
Нет, просто атрибуты. Дата/время не копируются. Да мне и ни к чему. Что же касается "заранее выбранных", то можно один раз наплодить файлов с разными наборами атрибутов (скажем, создать файл rh.ext с атрибутами readonly и hidden), сделать для него кнопочку с вызовом батника и жать при необходимости. То есть будет некое число файлов (недосуг сейчас считать по формулам комбинаторики) и соответствующее число кнопок на панели.
Утилита от Volniy работает только с одним файлом.
И вообще, я тупо излагал содержимое документации тому, кому лень нажать F1.

#16:  Author: FlasherLocation: Москва PostPosted: Wed Sep 05, 2012 17:33
    —
Вахмурка wrote:
Да мне и ни к чему.
Тогда я не понимаю, в чём похвальба, если исходная задача в полном смысле не решена. Ты же отвечал на вопрос топикстартера.

ЗЫ: F1 и описания действий тут вообще ни к чему. Есть памятка. А что делать с файлами написано в названии.

#17:  Author: Tol!kLocation: Арзамас PostPosted: Wed Sep 05, 2012 17:40
    —
Про перенос времени даже не подумал,
потому что про него уже есть 3 темы http://www.google.com/search?as_q=touch&as_sitesearch=forum.wincmd.ru

#18:  Author: FlasherLocation: Москва PostPosted: Wed Sep 05, 2012 18:14
    —
oshizelly, LonerD, а менять нужно только даты? Остальные атрибуты не трогаем?

#19:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Sep 05, 2012 18:36
    —
Quote:
Тогда я не понимаю, в чём похвальба
Хвалю за то, что его батник работает.
Quote:
исходная задача в полном смысле не решена
Вот исходная задача:
Quote:
В TC можно "взять" атрибуты файла на активной панели и присвоить их выделенному файлу (или файлам) на пассивной панели
Quote:
Ты же отвечал на вопрос топикстартера.
Не совсем. Я отвечал вот на что:
Quote:
Нельзя ли для менее продвинутых юзеров хотя бы парой слов пояснить, что с этим батником делать?
Quote:
F1 и описания действий тут вообще ни к чему. Есть памятка
Назови памяткой, документацией, манулом, справкой - суть не в этом. Что такое батник, скажет яндекс. А вот как его прикрутить к Тоталу - будьте любезны изучать матчасть.

2oshizelly
Подай голос - ты получил что хотел?

#20:  Author: FlasherLocation: Москва PostPosted: Wed Sep 05, 2012 18:51
    —
Вахмурка wrote:
Вот исходная задача
А остальные условия обрубились? Так не бывает..

Вахмурка wrote:
Назови памяткой, документацией, манулом, справкой - суть не в этом.
Суть в том, чтобы не писать по сто раз одно и то же...

Вахмурка wrote:
А вот как его прикрутить к Тоталу - будьте любезны изучать матчасть.
Матчасть в твоём понимании - это то, что написано в справке ТС? Так там о привязке сценариев ни слова.

#21:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Sep 05, 2012 19:01
    —
Quote:
Так там о привязке сценариев ни слова
Как же:
Quote:
You must give the extensions .com and .bat
Насчет памятки: дело ты сделал хорошее, спору нет. Да вот только сомневаюсь, что все новички сначала прилежно изучают справку ТС, потом - вики, потом - все прилепленные темы, потом - общий поиск по форуму, и лишь затем, не найдя ответа, задают вопрос. Будь оно так, на форуме была бы тишь да гладь: все все знают, спрашивать и отвечать не о чем. Вопрос об обязательном предварительном изучении всех упомянутых справочных материалов поднимался не раз, а воз и ныне там.

#22:  Author: LonerDLocation: Донецк PostPosted: Wed Sep 05, 2012 19:52
    —
Quote:
LonerD, а менять нужно только даты?

Мне достаточно только переноса даты.
Весьма желательна работа не только с файлами как таковыми - но и с каталогами (считать с них дату, перенести дату на другой каталог).

#23:  Author: oshizelly PostPosted: Wed Sep 05, 2012 21:14
    —
Tol!k и Вахмурка
Большое спасибо за батник и подробные пояснения.
Вот только это, к сожалению, не тот функционал, о котором я просил (и LonerD тоже). Вероятно, ввело в заблуждение неудачное название топика, прошу извинить. На самом деле речь шла о переносе значений времени создания и модификации файлов. Именно это делает утилита от Volniy - и, надеюсь, будет делать решение от Flasher.
А к атрибутам это имеет только то отношение, что в TC изменение штампов времени файла засунуто в диалог изменения атрибутов.

Flasher
Quote:
менять нужно только даты? Остальные атрибуты не трогаем?

Что касается меня, то дат создания, модификации и последнего доступа вполне достаточно. Ибо, как уже было сказано мною же на предыдущей странице, вряд ли кому-то понадобится копировать с одного файла на другой, например, атрибут System или Hidden

Вахмурка
BatchCopyDate http://powerpro.wincmd.ru/Scripts/BatchCopyDate.htm, конечно, хорошая штука. Вот только очень уж ограничены случаи применения:
Quote:
Присваивает дату и время создания и изменения файлов в противоположной панели (источник) [url]одноименным[/url] файлам в текущей панели (приемник)

Не говоря уж про обязательную установку PowerPro.

P.S
На правах топикстартера уточнил заголовок. Надеюсь, не нарушил этим правил? Ежели чего, пусть модераторы восстановят, как было.

#24:  Author: FlasherLocation: Москва PostPosted: Thu Sep 06, 2012 02:03
    —
Что-то пока не смог найти, как на vbs менять дату создания и последнего доступа. C датой модификации проблем нет, это быстро. Видимо, придётся утилиту цеплять. Завтра попробую окончательно разобраться.

#25:  Author: sa PostPosted: Thu Sep 06, 2012 14:02
    —
LonerD wrote:
Неплохо бы предусмотреть копирование атрибутов с файла под курсором на все выделенные файлы, которые находятся в той же самой панели
LonerD wrote:
Мне достаточно только переноса даты.
Весьма желательна работа не только с файлами как таковыми - но и с каталогами

Если в тоталовском диалоге изменения атрибутов создать шаблон операции, в который добавить атрибуты “Дата модификации”, “Дата создания” и “Дата последнего доступа” из встроенного плагина tc, то для переноса даты на выделенные файлы/каталоги, достаточно будет в диалоге выбрать шаблон (если он ещё не был выбран ранее), нажать кнопки “Загрузить из файла под курсором” и OK.

#26:  Author: oshizelly PostPosted: Thu Sep 06, 2012 15:36
    —
sa
Quote:
для переноса даты на выделенные файлы/каталоги, достаточно будет в диалоге выбрать шаблон (если он ещё не был выбран ранее), нажать кнопки “Загрузить из файла под курсором” и OK.

Вполне рабочая идея, спасибо!

Тем не менее хотелось бы обойтись еще меньшим количеством жимокликов. В идеале - один-единственным, как это позволяет утилита CopyAttr.exe, повешенная на хоткей пользовательской команды.

#27:  Author: sa PostPosted: Thu Sep 06, 2012 16:13
    —
oshizelly wrote:
хотелось бы обойтись еще меньшим количеством жимокликов

Вызов диалога и нажатие кнопок “Загрузить из файла под курсором” и OK можно сделать скриптом (но многим это не понравится…)
Code:
'==================================================================================
' Описание:   Установить атрибуты выделенных файлов/каталогов из файла под курсором
' Требования: Необходима регистрация WSH Helper for TC by Volniy
'==================================================================================
Option Explicit
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.SendCommand 502 'Изменить атрибуты
TCS.Pause = 100
TCS.SendKeystroke "+{TAB 7}{SP}{TAB}{SP}{TAB 2}{SP}{TAB}{ENTER}"
Set TCS = Nothing
Wscript.Quit

Add.
Обнаружил неприятную особенность в диалоге изменения атрибутов.
Кнопка “Загрузить из файла под курсором” не устанавливает (как того хотелось бы) галку “Использовать плагины:”, если в колонке “Значение:” не произошло никаких изменений при её нажатии.
А вот галка “Изменение даты/ времени:” после нажатия кнопки “Загрузить из файла под курсором” выставляется всегда (независимо от того поменялись ли значения полей “Дата:” и “Время:”). И это кажется более правильным поведением!
В связи с обнаруженным добавил в скрипте принудительную установку галки “Использовать плагины:”.

#28:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 14:08
    —
Flasher wrote:
Видимо, придётся утилиту цеплять.
Остановился на nircmd, но она криво часы меняет, на один час меньше. Кто подтвердит?
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Utils\nircmd\nircmd.exe"
setfilefoldertime %V "" "" "01-01-2012 08:08:08"
wcmicons.dll,7
Далее смотрим по cm_SetAttrib

#29:  Author: oshizelly PostPosted: Sat Sep 08, 2012 14:58
    —
Flasher wrote:
Далее смотрим по cm_SetAttrib

В смысле - куда смотрим и зачем? Question
То есть, понятно, что cm_SetAttrib - это внутренняя команда TC. Вопрос, что конкретно с этой командой делать, чтобы проверить работу кнопки с Nircmd.exe?

#30:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 15:00
    —
oshizelly
Я пишу про часы. Вот на них в поле "Время" и смотреть.
Что делать? Выполнить (любым доступным способом с установкой курсора на соотв. файле). Very Happy
Я не настаиваю на cm_SetAttrib, можно и системный диалог свойств по Alt+Enter открыть и смотреть время напротив "Открыт:".
Если покажет 7 часов вместо 8, то баг подтверждается.

#31:  Author: oshizelly PostPosted: Sat Sep 08, 2012 17:31
    —
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" случайно? Может, мы про разные атрибуты говорим?

#32:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 17:43
    —
oshizelly
1. Советую почитать справку ТС на предмет параметров. %V в версии 7.02 не поддерживается. %V и "d:\testfile.txt" писать вместе бессмысленно.
У меня синтаксис правильный.
2. А как же будет работать, если копируется неверная кнопка вместо моей?
3. У меня с секундами проблем нет. Только с часами.

"Открыт" отражает время последнего доступа. Вполне логичное название.

#33:  Author: oshizelly PostPosted: Sat Sep 08, 2012 19:13
    —
Flasher
Flasher wrote:
А как же будет работать, если копируется неверная кнопка вместо моей?

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

Сдвиг на 1 час - это явно что-то с поясным временем связано. Может, попробовать в порядке эксперимента изменить в настройках системы часовой пояс или снять галку автоматического перехода на летнее время?

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

oshizelly wrote:
Сдвиг на 1 час - это явно что-то с поясным временем связано.
Откуда тут связь с часовыми поясами, если мы явно задаём конкретное время?

#35:  Author: oshizelly PostPosted: Sat Sep 08, 2012 20:02
    —
Flasher
Flasher wrote:
Оригинальный синтаксис написан в моей кнопке. Не надо никаких самостоятельных экспериментов.

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


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

Не знаю, откуда. Это просто гипотеза. Я мог бы долго рассуждать и аргументировать, почему я считаю такую штуку возможной... Но не проще ли проверить? Это вряд ли займёт больше 2 минут.

#36:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 20:11
    —
oshizelly wrote:
В чем отличие от указанного там синтаксиса - не понимаю
В общем-то, результат будет аналогичный, но последний параметр ничего не даст, он будет проигнорирован. Даты всего 3, а не 4.

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


Last edited by Flasher on Sat Sep 08, 2012 20:45; edited 1 time in total

#37:  Author: oshizelly PostPosted: Sat Sep 08, 2012 20:39
    —
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:
Навеяло:
У чукчи спрашивают, что дала ему советская власть.
- Очень много дала, однако! Раньше у чукчи было два чувства: чувство голода и чувство холода. Сейчас у него их три: чувство голода, чувство холода и чувство глубокого морального удовлетворения.

#38:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 20:42
    —
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

#39:  Author: oshizelly PostPosted: Sat Sep 08, 2012 21:10
    —
Flasher
Черт, все, разобрался наконец, почему у меня для файла под курсором не работало. Рассказывать не буду, чтобы не стать посмешищем всего интернета. Embarassed Ограничусь констатацией, что эта часть проблемы решена.

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

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

Кстати, важное замечание: при вызове системного диалога свойств файла (properties) время последнего доступа (которое в русском переводе "открыт") может обновляться на текущее. Наверное, потому что при вызове этого диалога система как раз и осуществляет доступ к файлу для считывания свойств файла... А может и не меняться. От чего это зависит - не знаю.

#40:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 21:17
    —
oshizelly wrote:
Рассказывать не буду, чтобы не стать посмешищем всего интернета.
Если всего, то ты многое упускаешь, это ж какой пиар (на этом можно состояние сколотить). Wink
oshizelly wrote:
Так вот примерно..
Я не про перевод, а про то, что идёт в команде.
По переводу:
Только дата и время. А так всё верно. Урок английского для второго класса. Wink
И, кстати, в мануале написано "Accessed Date", а не "Last Acccessed".
oshizelly wrote:
Кстати, важное замечание
На 7 такого нет..
Может, тогда ну его, доступ?

#41:  Author: oshizelly PostPosted: Sat Sep 08, 2012 21:48
    —
Flasher wrote:
Может, тогда ну его, доступ?

Как по мне, так можно без него обойтись. Реально важны время создания и модификации. Very Happy

#42:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 22:58
    —
Ну, вообще, конечно, не помешает. Пробуйте.

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

#43:  Author: oshizelly PostPosted: Sat Sep 08, 2012 23:12
    —
Flasher wrote:
Пробуйте.

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

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

А почему - "активной"? Это не опечатка? Для сравнения: утилита Volniy копировала значения атрибутов времени с выделенного (текущего( файла на активной панели на выделенный файл на пассивной панели. А тут какой алгоритм? Надо файлы предварительно выделять явным образом?

#44:  Author: FlasherLocation: Москва PostPosted: Sat Sep 08, 2012 23:20
    —
oshizelly
Сохрани с расширением vbs, а дальше по памятке подфорума.

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

Add: убрал лишний параметр, кое-что исправил.

#45:  Author: oshizelly PostPosted: Sun Sep 09, 2012 13:11
    —
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

#46:  Author: FlasherLocation: Москва PostPosted: Sun Sep 09, 2012 13:41
    —
oshizelly wrote:
Я счастлив до полного изнеможения! Спасибо!
Это хорошо. На здоровье!

oshizelly wrote:
Так можно скрипт так настроить, чтобы в качестве источника при копировании значений штампом времени использовался файл в активной панели и копировалось на файл в пассивной?
Нет. Название скрипта уже это не подразумевает. Не в пассивной, а в активной, то, что запрашивал LonerD. Т.е. изменяемые файлы всё время должны быть в активной.

oshizelly wrote:
А как то же самое сделать штатными средствами TC?
Дык, а чего поиском не пользуемся? Даже в приведённой памятке об этом написано. Wink

#47:  Author: oshizelly PostPosted: Sun Sep 09, 2012 15:20
    —
Flasher wrote:
Нет. Название скрипта уже это не подразумевает. Не в пассивной, а в активной, то, что запрашивал LonerD. Т.е. изменяемые файлы всё время должны быть в активной.

Вот все-таки это IMHO чуточку портит всю картину, так как противоречит базовым понятиям самого TC. Активная панель - это source pane, то есть, панель-источник, а пассивная - target pane, то есть, панель приемник. И на этой концепции построены все команды TC и всех плагинов.

А здесь у нас получается ровно наоборот: источник - это пассивная панель, а приемник - активная. А поскольку многие операции выполняются пользователем почти на автомате, то возникает путаница. Я уже успел паре файлов таким образом штампы времени испортить, причем уже и не вспомнишь, что там до этого было Twisted Evil
То есть, надо все время в голове держать, что когда копируешь время, то источник - это приемник, а приемник - это источник... Так последние мозги могут выкипеть.

Flasher wrote:
Дык, а чего поиском не пользуемся?

Привычка к духовному иждивенчеству, однако Wink Всегда есть надежда, что какой-нить добрый человек пошлет в известное место, то бишь, в правильный топик.

#48:  Author: FlasherLocation: Москва PostPosted: Sun Sep 09, 2012 15:40
    —
oshizelly
Я же объяснил про доп. компонент. Скрипт к ТС никакого отношения не имеет, он берёт только пути параметров. Ему до фени, что там за базовые понятия в ТС.
И раз речь зашла о базовых понятиях, то отчего вдруг выделенные элементы из этой концепции выпали? Если есть такая база, то дай мне параметр со списком выделенного в пассивной панели. Есть? Нет. А на нет и суда нет..
Мы работает с выделенными элементами в активной панели. Никакой тут путаницы нет. Источник - это исходный (активный) каталог, а не любой элемент, из которого берётся информация.
Да, для одного файла я, конечно, могу предложить замену, это просто. Замени
Code:
For Each F in Split(FSO.GetFile(List).OpenAsTextStream(1, -1).ReadAll, L)
  WSH.Run Nircmd & " setfilefoldertime """ & F & """ " & P
Next
на
Code:
WSH.Run Nircmd & " setfilefoldertime """ & List & """ " & P
и параметры будут такими: %V %T%M <индекс>
Для нескольких нужен Хелпер (пока без портабл).

oshizelly wrote:
Всегда есть надежда
Это только на первый раз она оправдалась. Далее действую в соответсвии с правилами, обходя подобные оффтопные вопросы стороной.

#49:  Author: oshizelly PostPosted: Sun Sep 09, 2012 16:43
    —
Flasher wrote:
Да, для одного файла я, конечно, могу предложить замену, это просто.

Вот теперь я уже просто совсем счастлив Very Happy Very Happy Very Happy
Дело в том, что мне обычно приходится переносить значения времени с исходного файла именно на единичный файл-приемник (в пассивной панели). Поэтому меня лично не сильно расстраивает ограничение, что это для нескольких файлов это не работает. А для тех, кому это действительно надо, есть основная версия скрипта Very Happy

#50:  Author: sa PostPosted: Tue Sep 11, 2012 11:31
    —
Для переноса средствами TC атрибутов из файла под курсором в активной панели на выделенные файлы/каталоги пассивной панели, можно в активной панели в диалоге изменения атрибутов выбрать шаблон (если он ещё не был выбран ранее) и с помощью кнопок “Загрузить из файла под курсором” и OK запомнить в TC значения атрибутов, а затем, уже в пассивной панели, повторно вызвать диалог и, выбрав опцию “Использовать плагины:”, нажать OK.

#51:  Author: FlasherLocation: Москва PostPosted: Tue Sep 11, 2012 12:24
    —
sa, мы в Автоматизации, а не Общих вопросах. Wink

#52:  Author: LonerDLocation: Донецк PostPosted: Tue Sep 11, 2012 23:01
    —
Flasher
Спасибо за скрипт.
Windows 7 SP1 x64.
Запуск с параметром %T%M %WL 7 или %V %WL 7
Даты каталогов не изменяются. Скрипт обрабатывает только файлы.

Quote:
то, что запрашивал LonerD

Во время запроса я не просчитал возможные варианты развития событий и попросил универсализацию скрипта - работу с активной панелью как дополнение к работе с пассивной панелью, потому что заранее неизвестно с чем именно придётся работать.
Можно ли сделать ОДИН вариант запуска? (опционально, с дополнительным параметром).
При запуске скрипта должен выдаваться запрос - переносить ли на выделенные файлы параметры с выбранного файла активной панели или с выбранного файла пассивной панели.

(PS. Хотя это я и сам могу доделать себе; но если будет желание - можешь добавить в публичный скрипт такой вариант универсализации).

В идеале ещё бы рекурсию предусмотреть (опционально с доп.параметром) - если выделен каталог, то меняются и даты всех файлов в нём.

#53:  Author: FlasherLocation: Москва PostPosted: Tue Sep 11, 2012 23:45
    —
LonerD wrote:
Даты каталогов не изменяются. Скрипт обрабатывает только файлы.
Т.е. так только в x64? И с учётом последней правки?
LonerD wrote:
потому что заранее неизвестно с чем именно придётся работать
Не понял логики. А с чем придётся работать? Функционально ты ничего не теряешь. Просто подсказку сделай соответствующую и работай по описанию.
LonerD wrote:
но если будет желание - можешь добавить в публичный скрипт такой вариант универсализации
Не, особо нет желания. Запросы не люблю, это раз, и потом - Хелпер. Тебя он устроит?
LonerD wrote:
В идеале ещё бы рекурсию предусмотреть (опционально с доп.параметром) - если выделен каталог, то меняются и даты всех файлов в нём.
Да, это можно. Потом как-нибудь.

#54:  Author: LonerDLocation: Донецк PostPosted: Wed Sep 12, 2012 01:04
    —
Quote:
Т.е. так только в x64? И с учётом последней правки?

Проверял перед тем как запостить, ранние версии скрипта не видел.
Проверял под Win7x64 и TC 8.01x32. Даты у папок не меняются.
Под Win8x64 и WinXPx32 проверить смогу через несколько дней.

Quote:
Не, особо нет желания. Запросы не люблю, это раз, и потом - Хелпер. Тебя он устроит?

Я тоже не люблю, но иначе получается две команды - одна для активной, вторая для пассивной панели.
Не настаиваю, тут запрос простейший, сам справлюсь, хэлпер совершенно ни к чему.

#55:  Author: FlasherLocation: Москва PostPosted: Wed Sep 12, 2012 05:12
    —
LonerD wrote:
Проверял под Win7x64 и TC 8.01x32. Даты у папок не меняются.
Проверь с nircmd x64.

LonerD wrote:
хэлпер совершенно ни к чему.
А, я неверно прочёл мысль. Выделенные файлы остаются в активной панели, как и заложено скриптом, просто нужно окно вместо параметров. В таком случае тут нужно рисовать окно с кнопками Пассивная/Активная. Да/Нет тут смотреться не будут...

#56:  Author: sa PostPosted: Wed Sep 12, 2012 10:40
    —
Flasher wrote:
мы в Автоматизации, а не Общих вопросах.
При использовании шаблонов операции, автоматизация нажатия двух-трёх лишних кнопок не всем и потребуется. Шаблоны у каждого могут быть свои: например кому-то может понадобиться перенос комментария и даты/времени модификации, а не только временных меток. Впрочем, простейший скрипт с нажатиями я привёл. Им можно воспользоваться по назначению, описанному в шапке скрипта. И просто для запоминания в TC атрибутов из файла под курсором (при отсутствии выделения других файлов). А также для присвоения запомненных атрибутов в любом другом месте (при переходе на противоположную панель, в подпапки, по Ctrl+D и т.п.): для этого там достаточно выделить нужные файлы/каталоги и перед вызовом скрипта поместить курсор на [..] (чтобы не “сбить” ранее запомненные атрибуты).

#57:  Author: oshizelly PostPosted: Wed Sep 12, 2012 11:27
    —
LonerD wrote:
Даты каталогов не изменяются. Скрипт обрабатывает только файлы.

Сейчас проверил: у меня основная версия скрипта тоже не работает для папок. А модифицированная версия http://forum.wincmd.ru/viewpost.php?p=95373 - работает и для папок тоже.
Windows XP SP-2, x32.

#58:  Author: FlasherLocation: Москва PostPosted: Wed Sep 12, 2012 13:32
    —
Для папок поправил.

#59:  Author: oshizelly PostPosted: Wed Sep 12, 2012 13:46
    —
Flasher
Работает Very Happy
Правда, моя любимая версия скрипта для одиночного файла/папки и так работала.

#60:  Author: LonerDLocation: Донецк PostPosted: Sun Sep 16, 2012 13:51
    —
Подтверждаю. Под ХР и Win8x64 теперь всё работает - и файлы, и каталоги.
Smile

#61:  Author: FlasherLocation: Москва PostPosted: Sun Sep 16, 2012 15:42
    —
LonerD wrote:
тут запрос простейший, сам справлюсь
Справился?
LonerD wrote:
иначе получается две команды - одна для активной, вторая для пассивной панели.
Считаю, что именно так и должно быть. Зачем кликать что-то в окне, если то же самое можно кликнуть на тулбаре, причём в более информативном представлении (иконка/подсказка)?

Подумал насчёт случая с выделенными файлами в пассивной панели. Не сказать, что это юзабильней. Я, например, выделение делаю в последнюю очередь, т.е. в любом случае у меня выбранное будет в активной панели. Если хотите, цепану Хелпер, не проблема (будет параметрический выбор инверсии). Если не надо, то выкладываю сейчас с рекурсией и закончим на этом. Question

#62:  Author: LonerDLocation: Донецк PostPosted: Sun Sep 16, 2012 17:27
    —
Quote:
Справился?

В какой-то мере. InputBox с диалогом: "Введите файл-источник: 1 - в активной панели, 2 - в пассивной".
Каким образом "рисовать окно с кнопками Пассивная/Активная" и присваивать переменной определённое значение при нажатии на одну или вторую кнопку - пока не знаю.

В общем, может кому пригодится.
Строку:
Code:
 File = .Item(0) : List = .Item(1) : Count = .Item(2)

заменить на
Code:
FileA = .Item(0) : File = .Item(1) : List = .Item(2) : Count = .Item(3) : Source = .Item(4)


Перед Set FSO добавить:
Code:
If Source = 0 Then Source = InputBox("Enter Source File or Dir:" & vbNewLine &_
                   "1 - Source file in Target panel" & vbNewLine &_
                    "2 - Source file in Active panel", "Source", 1)
On Error Resume Next
If Source = 2 Then
  File = FileA
  ElseIf Source <> 1 Then WScript.Quit
End If


Параметры запуска:
Code:
' Параметры: %V %T%M %WL <индекс замены> <индекс файла-источника>
' Индекс файла-источника принимает следующие значения:
' 1 - файл-источник - это выбранный файл пассивной панели
' 2 - файл-источник - это выбранный файл активной панели
' 0 - выдаётся запрос на указание файла-источника


Quote:
случая с выделенными файлами в пассивной панели

Мне не надо.
Кстати, а если без Хэлпера, то можно ведь обойтись и nircmd.
Прописать выполнение команды Nircmd sendkeypress tab
перед и после присвоения параметров.

#63:  Author: FlasherLocation: Москва PostPosted: Sun Sep 16, 2012 17:38
    —
Ладно, тогда ждать остальных не будем, добавил рекурсию.
Теперь тебе придётся опять параметры править. Very Happy

LonerD wrote:
Каким образом "рисовать окно с кнопками Пассивная/Активная" и присваивать переменной определённое значение при нажатии на одну или вторую кнопку - пока не знаю.
WSO/HTA.

LonerD wrote:
"Enter Source File or Dir:" & vbNewLine &_
"1 - Source file in Target panel"
Вас-вас? Ихь ферштэе нихьт, ворюбэр гейт ди Рэдэ! Майн Копф эксплодирт!

vbNewLine меняй на L.
Да, и опциональный выбор сам по себе бестолковый. Просто сделай себе вывод в окне, да и всё, а последний параметр убери. Тебе-то зачем плодить то, чем ты не будешь пользоваться?

On Error Resume Next лишнее, и, коли используешь, обнулять нужно обязательно, иначе все ошибки в скрипте будут игнорироваться. И, конечно, лучше не выходить при ошибке ввода, а снова показывать то же окно:
Code:
Do Until Source = 1 Or Source = 2
  Source = InputBox("Допустимые значения ввода:" &L&L& "1  (если источник в активной панели)" &L&L&_
  "2  (если источник в пассивной панели)", "    Присвоение даты и времени выбранным элементам")
  If Trim(Source) = "" Then WScript.Quit
Loop


LonerD wrote:
Кстати, а если без Хэлпера, то можно ведь обойтись и nircmd. Прописать выполнение команды Nircmd sendkeypress tab
перед и после присвоения параметров.
Не понял, как относится эмуляция Tab (которую легко можно сделать штатными средствами) к возможности брать список пассивной панели. Параметры кнопки TC преобразуются ещё до запуска приложения. Так что бесполезно (уже много раз обсуждалось).

#64:  Author: oshizelly PostPosted: Tue Sep 25, 2012 01:32
    —
Выяснилась такая неприятная вещь: скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает.
Это никак не лечится?

#65: Re: Автоматизация переноса атрибутов и времени... Author: VolniyLocation: Местный PostPosted: Tue Sep 25, 2012 09:51
    —
oshizelly wrote:
...Volniy написал замечательную утилитку CopyAttr.exe.... Однако TC за это время научился работать с юникодными именами файлов, а эта утилита - нет...

Сам удивлен, что на харде нашлись таки исходники (для чего оно писалось, я так и не вспомнил). Понимаю, что это нафик никому не нужно, но чисто из спортивного интереса просто переписал все функи на Unicode http://rghost.ru/40561546. Честно говоря, даже не пытался что-то менять в коде (кроме необходимых изменений под юникодность). Если кто решится проверить, сообщите результат. Thanks in advance!

#66:  Author: oshizelly PostPosted: Tue Sep 25, 2012 11:08
    —
Volniy wrote:
Понимаю, что это нафик никому не нужно,

Просил бы воздержаться от подобных идейно вредных заявлений! Прога нужна партии и народу!

Вот только у неё почти та же беда, о которой я писал постом выше: перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "Ошибка получения атрибутов искодного файла! Ошибка: 2" и "Ошибка установки атрибутов целевого файла! Ошибка: 2"
Или, может, это у меня в системе что-то криво работает?

P.S.
Мой Symantec Security блокирует запуск и жестоко удаляет файл в карантин. Похоже, там внутри какой-то страшный троян. Laughing Зачем использовать некошерные упаковщики?

#67:  Author: VolniyLocation: Местный PostPosted: Tue Sep 25, 2012 11:28
    —
oshizelly wrote:
перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "Ошибка получения атрибутов искодного файла! Ошибка: 2" и "Ошибка установки атрибутов целевого файла! Ошибка: 2"

Или, может, это у меня в системе что-то криво работает?

Не знаю (Ошибка 2 = Файл не найден). Я ж говорю, что не тестировал. Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так.

PS Файл ничем не упакован. Абсолютно.
PPS Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз. Надо будет посмотреть реализацию разборки параметров командной строки.

#68:  Author: oshizelly PostPosted: Tue Sep 25, 2012 12:56
    —
Volniy wrote:
Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так.

Это просто. Windows XP, TC 8.01. В региональных настройках OS язык для не-юникодных программ (non-Unicode programs language) - русский? Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты.

Volniy wrote:
Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз.

Попробовал. Таки да, если имя без пробелов, то юникодные имена обрабатываются без проблем. И если с пробелами, но без юникода, то тоже без проблем. То есть, для получения проблемы нужно совпадение обоих условий. К сожалению, это совпадение, как правило, имеет место. Sad

Volniy wrote:
Файл ничем не упакован. Абсолютно.

Ну, тогда не знаю, что им всем не нравится: https://www.virustotal.com/file/73b18298eec36f226013235f6e1668a6e8cf3f8d69073d35006abc3a414dd418/analysis/1348561434/

#69:  Author: FlasherLocation: Москва PostPosted: Tue Sep 25, 2012 14:41
    —
oshizelly wrote:
скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP).
Не подтверждаю. У меня всё работает (XP/7 x32).

#70:  Author: oshizelly PostPosted: Tue Sep 25, 2012 15:12
    —
Flasher wrote:
У меня всё работает (XP/7 x32).

Два уточняющих вопроса:
1. В региональных настройках OS non-Unicode programs language - русский?
2. Какие юникодные символы содержатся в имени тестируемых файлов?

#71:  Author: FlasherLocation: Москва PostPosted: Tue Sep 25, 2012 15:19
    —
1. Да.
2. äüö.jpg - файл, с которого берётся дата.

#72:  Author: oshizelly PostPosted: Tue Sep 25, 2012 15:34
    —
Flasher wrote:
2. äüö.jpg - файл, с которого берётся дата.

Ну так а я о чём говорю:
Quote:
скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает.

#73:  Author: FlasherLocation: Москва PostPosted: Tue Sep 25, 2012 15:43
    —
oshizelly
Понял. Проблема исключительно nircmd. Тут уже ничего не поделать, кроме как не потревожить автора.

#74:  Author: VolniyLocation: Местный PostPosted: Tue Sep 25, 2012 16:22
    —
oshizelly wrote:
Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты.

Пробовал-перепробовал. Работает. Может я что неправильно делаю? Wink
Не забываем параметры в кавычки помещать, если содержится пробел в пути и/или имени? Как вообще при тестах у тебя исполняется программа? Из командной строки Тотала?

#75:  Author: oshizelly PostPosted: Tue Sep 25, 2012 17:21
    —
Volniy wrote:
Как вообще при тестах у тебя исполняется программа? Из командной строки Тотала?

Из кнопки. Вот код:
Code:
param50=""%p%n" "%t%m""


И потом, почему проблемы вызывает именно сочетание в имени юникод + пробел? А любое из двух условий по отдельности - нет.


Last edited by oshizelly on Wed Sep 26, 2012 11:07; edited 1 time in total

#76:  Author: sa PostPosted: Tue Sep 25, 2012 17:43
    —
oshizelly wrote:
""%p%n" "%t%m""

А если вместо этого %P%N %T%M записать?

#77:  Author: FlasherLocation: Москва PostPosted: Tue Sep 25, 2012 17:51
    —
oshizelly
А простой код кнопки нельзя было привести?
Да, кавычки в параметрах тут вообще лишние.

Volniy
Дату модификации неправильно меняет.

#78:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue Sep 25, 2012 18:03
    —
oshizelly
То,что приведено в этом посте — не код кнопки, а кусок из BAR-файла.

#79:  Author: oshizelly PostPosted: Tue Sep 25, 2012 18:03
    —
sa wrote:
А если вместо этого %P%N %T%M записать?

А если так, то работает!!! Surprised Спасибо!

Flasher wrote:
Дату модификации неправильно меняет.

В чём именно выражается неправильность? На первый взгляд вроде бы все правильно Question

#80:  Author: FlasherLocation: Москва PostPosted: Tue Sep 25, 2012 18:19
    —
oshizelly wrote:
В чём именно выражается неправильность?
Пробовал с каким-то hlp-файлом, то какие-то совсем другие числа выдавал, то просто новая дата не присваивалась. Закономерность не выявил.

#81:  Author: oshizelly PostPosted: Tue Sep 25, 2012 19:01
    —
Flasher
Может, этот файл был просто залочен каким-то процессом, тем же TC?
Прошу простить за банальное предположение, но даже лучшие из нас порой упускают из виду очевидное.

 !  Avada:
Оверквотинг (включая полное цитирование предыдущего поста, содержащего цитату) запрещён правилами форума. Пост отредактирован.

#82:  Author: FlasherLocation: Москва PostPosted: Tue Sep 25, 2012 20:34
    —
oshizelly
Нет, обычный файл, ничем не открытый, в какой-то тестовой папке валяется.

#83:  Author: sa PostPosted: Tue Sep 25, 2012 21:05
    —
Flasher wrote:
Закономерность не выявил.

А воспроизводится хоть ошибка то?

#84:  Author: VolniyLocation: Местный PostPosted: Wed Sep 26, 2012 02:32
    —
Flasher wrote:

Volniy
Дату модификации неправильно меняет.


Это вряд ли. Дело в том, что все три времени файлу устанавливаются одной апишной функцией одновременно. Тоже самое и со считыванием этих времен из файла-источника. Скорее всего имел место быть какой-то дополнительный доступ к файлу и, как результат, измененное время модификации.

#85:  Author: sa PostPosted: Wed Sep 26, 2012 09:45
    —
А вот с таким символом: 文 (когда я пробовал-перепробовал) программа выдавала ошибку 123…

#86:  Author: VolniyLocation: Местный PostPosted: Wed Sep 26, 2012 10:30
    —
Ошибка 123="Синтаксическая ошибка в имени файла, имени папки или метке тома."
То есть система говорит, что символ для нее неприемлемый. А этот символ явно относится к числу иероглифов. Не пробовал сам, но в региональных настройках ХР для поддержки иероглифов требуется специальную галочку поставить. Поставлена у тебя галочка?

#87:  Author: sa PostPosted: Wed Sep 26, 2012 11:06
    —
Volniy wrote:
Поставлена у тебя галочка

Нет (на домашнем компе поэкспериментирую позже). Но сам тотал как-то обходится без неё: и копирует такие файлы и атрибуты присваивает.

#88:  Author: oshizelly PostPosted: Wed Sep 26, 2012 11:08
    —
Flasher wrote:
Проблема исключительно nircmd. Тут уже ничего не поделать, кроме как не потревожить автора.

Так может потревожим, в общих интересах? Только я вряд ли смогу внятно описать проблему, так что...

#89:  Author: FlasherLocation: Москва PostPosted: Wed Sep 26, 2012 12:19
    —
Volniy wrote:
Скорее всего имел место быть какой-то дополнительный доступ к файлу
Нет. Писал же через пост выше.

oshizelly wrote:
Только я вряд ли смогу внятно описать проблему
Что там описывать? Команды setfiletime/setfilefoldertime (а вероятно и ряд других) не работают с юникодными именами в пути к файлу/папке.

#90:  Author: sa PostPosted: Wed Sep 26, 2012 12:39
    —
oshizelly wrote:
На первый взгляд вроде бы все правильно

Присоединяюсь. Ошибок не замечал.

#91:  Author: oshizelly PostPosted: Wed Sep 26, 2012 13:55
    —
Flasher
Ладно, попробую написать автору Nircmd.

#92:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Sep 26, 2012 14:18
    —
2Volniy
avast нашел в этом файле угрозу "Win32:Trojan-gen". Это нормально?

#93:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Sep 26, 2012 14:33
    —
Вахмурка
Уже было, только с другим антивирусом. У меня Аваст сейчас тоже ругается, при первом скачивании ругани не было. Сообщил разработчикам. Сейчас на virustotal.com — 9 из 43.

#94:  Author: VolniyLocation: Местный PostPosted: Thu Sep 27, 2012 01:00
    —
Вахмурка wrote:
2Volniy
avast нашел в этом файле угрозу "Win32:Trojan-gen". Это нормально?

Паранойя - это ненормально.
http://rghost.ru/40595690 Перекомпилирован с опцией "Native Code" (было - "P-Code"). До упаковки UPX все еще ругались два каких-то мелких говноантивируса, после упаковки - один, но это не один из тех двух, но, видать, такое же г.

#95:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Sep 27, 2012 08:16
    —
Volniy
Для версии по новой ссылке на virustotal.com — уже ни одного. 0/43. Проблему можно считать закрытой.

#96:  Author: sa PostPosted: Thu Sep 27, 2012 09:16
    —
Volniy
Пробовал ставить галочку для поддержки иероглифов – не помогло.
Заметил, что программа как бы заменяет символ 文 на знак ? и использует эту маску для выбора файла и, если таковой файл присутствует в папке, то использует его в качестве исходного или целевого, не выдавая сообщение об ошибке. Например, вместо 文12.txt выбирается 312.txt. Подобным же образом ведёт себя программа сравнения файлов Compare It!( wincmp3.exe). В то же время Winword, Excel, Paint обрабатывают файлы с указанным символом нормально.

#97:  Author: VolniyLocation: Местный PostPosted: Thu Sep 27, 2012 16:51
    —
Как это часто случается, дело было не в бобине Embarassed После более менее внятного осмотра выяснилось, что в коде оставалась еще одна, походу, не юникодная функция, предназначение которой в этой утилитке по прошествии 8 лет уже попросту не могу понять. Удалил фрагмент с этим кодом и теперь вроде все ОК.
Проверьте у себя, кому не лень http://rghost.ru/40603770

BTW А вот фича копирования атрибутов директорий кому-нить может понадобиться?

#98:  Author: FlasherLocation: Москва PostPosted: Thu Sep 27, 2012 17:09
    —
Volniy wrote:
А вот фича копирования атрибутов директорий кому-нить может понадобиться?
Так оно уже запрашивалось тут. В скрипте реализовано. И уж точно не лишним было бы прикрутить обработку списков - %WF/%WL, в т.ч. рекурсивно.

#99:  Author: Tol!kLocation: Арзамас PostPosted: Thu Sep 27, 2012 17:38
    —
Поддерживаю.

#100:  Author: sa PostPosted: Thu Sep 27, 2012 18:01
    —
Volniy wrote:
в коде оставалась еще одна, походу, не юникодная функция

Если в описании кнопки в качестве первого параметра вводить ? (для вызова перед стартом программы диалогового окна с параметрами), то теперь появляется сообщение об ошибке. Не связано ли это как-то с удалённой функцией?
А так всё нормализовалось…

#101:  Author: VolniyLocation: Местный PostPosted: Fri Sep 28, 2012 01:55
    —
На сколько я понимаю при вводе ? параметры командной строки должны быть введены вручную. В таком случае их нужно ввести по всем правилам. То есть на данный момент это должны быть два полных пути к файлам, причем если в каком-либо пути есть пробел нужно его поместить в кавычки (в принципе кавычки не помешают в любом случае). Я попробовал сейчас пару вариантов с ? - прошло нормально (Юникодные имена не пробовал, не уверен, что они в этом диалоге должны работать).

Насчет директорий вроде все понятно, а вот не понял что насчет обработки списков? Это как?

Извиняюсь, но пишу даже не прочитав полностью этой темы. Просто заинтересовался поддержкой юникодных имен файлов, раньше как-то не сталкивался с этим вопросом. Я, наверное, сначала просмотрю, что тут уже предложено альтернативно.

#102:  Author: LonerDLocation: Донецк PostPosted: Fri Sep 28, 2012 03:29
    —
Quote:
а вот не понял что насчет обработки списков? Это как?

Есть один файл-источник (или каталог), с которого берутся атрибуты.
И эти атрибуты переносятся одновременно на несколько других файлов и/или каталогов (то есть обрабатывается список выделенных файлов/каталогов). Рекурсивно - в том смысле, что атрибуты с исходного файла переносятся на выделенный каталог и все файлы и подкаталоги, которые находятся внутри него.

#103:  Author: sa PostPosted: Fri Sep 28, 2012 08:02
    —
Volniy wrote:
параметры командной строки должны быть введены вручную
С предыдущей версией программы (а также и неюникодным её вариантом) можно было просто нажать OK, а теперь приходится убирать пробел перед первым путём. Строка параметров такая:
Code:
? %P%N %T%M

Volniy wrote:
пишу даже не прочитав полностью этой темы
Я так понял, ставится задача делать практически всё, что умеет TC через диалог изменения атрибутов, только меньшим количеством нажатий. Smile

#104:  Author: RodnyLocation: Могилёв, Беларусь PostPosted: Fri Sep 28, 2012 16:26
    —
sa wrote:
...приходится убирать пробел перед первым путём. Строка параметров такая:
Code:
? %P%N %T%M

А зачем ты там пробел поставил?

#105:  Author: sa PostPosted: Fri Sep 28, 2012 16:35
    —
Rodny
Согласно описанию параметров:
Quote:
? В качестве первого параметра вызывает перед стартом программы диалоговое окно, содержащее указанные далее параметры. Вы можете изменить их перед стартом программы и даже отменить запуск.

#106:  Author: RodnyLocation: Могилёв, Беларусь PostPosted: Fri Sep 28, 2012 17:03
    —
sa
Не, пробел не надо
Code:
?%P%N %T%M

TC его честно передаёт дальше, что мало какой программе нравится.


Last edited by Rodny on Fri Sep 28, 2012 17:05; edited 1 time in total

#107:  Author: Tol!kLocation: Арзамас PostPosted: Fri Sep 28, 2012 17:03
    —
sa wrote:
С предыдущей версией программы (а также и неюникодным её вариантом) можно было просто нажать OK, а теперь приходится убирать пробел перед первым путём.
Программа тут не при чём, до неё дело даже ещё не доходит. Любая строка параметров так обрабатывается.
Пиши без пробела
Code:
?%P%N %T%M


Quote:
Согласно описанию параметров:

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

#108:  Author: sa PostPosted: Fri Sep 28, 2012 17:30
    —
Rodny wrote:
что мало какой программе нравится.

Видно мне до сих пор везло на программы!

#109:  Author: VolniyLocation: Местный PostPosted: Fri Sep 28, 2012 18:01
    —
http://rghost.ru/40623688 Времени сегодня не было на что-то большее. Добавлена только поддержка копирования атрибутов с папки на папку (это как с файла на файл, без какой-либо рекурсии). Потом привинчу выбор копируемых атрибутов, наверное список и т.д., уж как пойдет.

PS Насчет пробела при использовании ? разобрался. Сейчас должно работать.

#110:  Author: FlasherLocation: Москва PostPosted: Sun Oct 07, 2012 12:40
    —
oshizelly wrote:
Ладно, попробую написать автору Nircmd.
Ну, что? Как успехи?

Volniy wrote:
Потом привинчу выбор копируемых атрибутов, наверное список и т.д., уж как пойдет.
Чего-то долго. Не пошло?

#111:  Author: oshizelly PostPosted: Sun Oct 07, 2012 17:45
    —
Flasher wrote:
Ну, что? Как успехи?

Написал ему тогда же, полторы недели назад. Но пока никакого ответа не получил. Наверное, и не получу уже.
Может, если кто-то еще напишет, то автор NirCmd больше внимания на проблему обратит.

#112:  Author: FlasherLocation: Москва PostPosted: Sun Oct 07, 2012 19:08
    —
oshizelly wrote:
если кто-то еще напишет
Написал в суппорт.

#113:  Author: oshizelly PostPosted: Sun Sep 08, 2013 16:02
    —
Продолжу старую тему.

Возникла задача попроще (??), как бы второй шаг предыдущей задачи. Раньше обсуждалось, как взять значения штампов времени создания и модификации исходного файла и применить их к целевому файлу.

Теперь надо тоже применить к выделенным целевым файлам определённые значения времени и/или создания (иногда оба вместе, а иногда каждого в отдельности), но взятые не от исходного файла, а из заранее созданного шаблона. Например, присвоить целевому файлу значение времени создания (time created) 01.01.2000 - 00.00.00.

Это можно было бы сделать при помощи команд setfiletime утилиты Nircmd, но, как уже выяснили выше http://forum.wincmd.ru/viewpost.php?p=95884 , Nircmd.exe игнорирует файлы с юникодными символами и проблемами в имени. (В промежутке вышло две новых версии nircmd, но баг так и остался.)

Как промежуточное решение хотя бы сделать так, чтобы после вызова диалога Change Attributes фокус автоматически перемещался в поле Date либо Time. Но это, конечно, было бы гораздо менее удобно.



Ну и до кучи кнопку для обновления даты модификации и/или создания выделенных файлов до текущей системной. В штатном диалоге [Change Attributes] есть кнопка [Current], но во-первых, надо очень много телодвижений, чтобы до неё добраться, а во-вторых, она работает меняет только время модификации.


Last edited by oshizelly on Sun Sep 08, 2013 20:14; edited 1 time in total

#114:  Author: FlasherLocation: Москва PostPosted: Sun Sep 08, 2013 19:33
    —
oshizelly wrote:
но, как уже выяснили выше http://forum.wincmd.ru/viewpost.php?p=95884 , Nircmd.exe игнорирует файлы с юникодными символами и проблемами в имени. (В промежутке вышло две новых версии nircmd, но баг так и остался.)
Да, только лишь чтение из файла с юникодным содержимым в буфер автор добавил.
FileTouch тоже с Юникодом не работает.
Да снизойдёт Vse-e....Volniy и допишет свою утилиту! Smile
Либо MVV эту пусть модернизирует.
Либо GNU-Touch (но что-то с ней неохота).

#115:  Author: Tol!kLocation: Арзамас PostPosted: Sun Sep 08, 2013 19:45
    —
Flasher wrote:
Либо GNU-Touch (но что-то с ней неохота).
имеющийся у меня
Quote:
Report bugs to <bug-coreutils@gnu.org>
не работает с Юникодом (м.б. давно не обновлял)

_http://mir.cr/0COGXBN4 работает + имеет более удобный формат даты YYYY-MM-DDThh:mm:SS[.frac]

Volniy
MVV

если будете допиливать – реквестую обработку содержимого папок и атрибутов самой папки


Last edited by Tol!k on Sun Sep 08, 2013 19:56; edited 2 times in total

#116:  Author: FlasherLocation: Москва PostPosted: Sun Sep 08, 2013 19:51
    —
Tol!k wrote:
http://www.touchdotexe.com/
Мёртвый, на продажу...

#117:  Author: Tol!kLocation: Арзамас PostPosted: Sun Sep 08, 2013 19:57
    —
Flasher wrote:
Мёртвый, на продажу...
залил

#118:  Author: FlasherLocation: Москва PostPosted: Sun Sep 22, 2013 13:20
    —
oshizelly
Указанная Tol!kом утилита не трогает атрибуты папок. А для изменения даты/времени файлов скрипт не нужен, достаточно кнопки, рекурсия там есть.
Что же касается установки текущего времени, то, в принципе, тоже можно кнопкой обойтись:
Code:
TOTALCMD#BAR#DATA
%ComSpec% /c "for /f "delims=" %i in
('type %WL') do "%%COMMANDER_PATH%%\Utils\touchdot.exe" -amxc -d %%date:~6%%-%%date:~3,2%%-%%date:~0,2%%T%%time%% "%%i""
timedate.cpl
Установить текущую дату и время для выбранных файлов

1

Tol!k wrote:
с Юникодом... работает
Почему-то кнопка с циклом не срабатывает для Юникода, с отдельным файлом без проблем..

Раньше качал SFDT, но она ни при каких условиях не отрабатывает, хотя пишет Changed...

#119:  Author: Dimsok PostPosted: Sun Nov 13, 2016 18:28
    —
Quote:
http://rghost.ru/40623688

Ни у кого нет в наличии?

#120:  Author: FlasherLocation: Москва PostPosted: Sun Nov 13, 2016 19:37
    —
Dimsok
Помню, что сохранял себе, но не нашёл. А в чём задача?

#121:  Author: Dimsok PostPosted: Sun Nov 13, 2016 19:47
    —
Quote:
Помню, что сохранял себе, но не нашёл. А в чём задача?

Переносить дату модификации с одного файла на другой. С твоим скриптом для уникодных имён не работает, а с этой программкой я так понял возможно при определённых ограничениях.

#122:  Author: FlasherLocation: Москва PostPosted: Sun Nov 13, 2016 20:21
    —
Code:
'============================ VBS =============================
' Присвоение файлу даты модификации другого файла
' Параметры: "<путь файла-источника>" "<путь файла-получателя>"
' Пример: %V %T%M
'==============================================================
With CreateObject("Shell.Application").NameSpace(0)
  .ParseName(WScript.Arguments(1)).ModifyDate =_
  .ParseName(WScript.Arguments(0)).ModifyDate
End With

#123:  Author: sa PostPosted: Sun Nov 13, 2016 21:21
    —
Dimsok wrote:
Ни у кого нет в наличии?

Выложил.

#124:  Author: Dimsok PostPosted: Sun Nov 13, 2016 22:31
    —
Flasher, sa
Спасибо.

#125:  Author: helb PostPosted: Tue Nov 22, 2016 16:06
    —
Тоже в тему, выкладывал такое раньше:
Копирование/вставка (Copy & Paste) атрибутов/времен файлов
Unicode, файлы/папки, рекурсия. Работает как обычный copy-paste, для одного объекта вообще на 100% интуитивно.

#126:  Author: Александр Дружинин PostPosted: Tue Dec 06, 2016 15:00
    —
Отличная утилита, давно искал подобную. Спасибо очень помогли.

#127:  Author: Dimsok PostPosted: Wed Jan 18, 2017 14:11
    —
http://forum.wincmd.ru/viewpost.php?p=95357

С параметром "1" (Время создания) не работает, а с "4" работает (Время создания+Дата модификации).

#128:  Author: FlasherLocation: Москва PostPosted: Wed Jan 18, 2017 19:35
    —
Могу такой скрипт с поддержкой Юникода предложить:
Code:
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Изменение дат и времени выбранных файлов и папок одной панели на дату и время
' элемента другой панели с возможностью рекурсивной обработки содержимого папок

' Условие: необходим компонент TCScript.dll

' Параметры: %d <актив./пассив. панель: A/P> <индекс замены> <флаг рекурсии: 1>
' Выбор панели определяет, где будет находиться текущий объект-источник.
' Соответственно, в другой панели должны быть выбраны изменяемые объекты.

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

' Примеры параметров:  %d P 2   |  %d A 7   |  %d P 4 1
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••

Option Explicit
Dim Title, C, Panel, Count, Rec, FSO, TCH, F, List, DC, DM, DA, D, T
With WSH.Arguments
  Title = " Изменение атрибутов": C = .Count: If C = 0 Then WSH.Quit
  Panel = .Item(1) : Count = .Item(2) : If C = 4 Then Rec = .Item(3)
End With : If Not IsNumeric(Count) Or (Count < 1 Or Count > 7) Then _
MsgBox "Недопустимый индекс замены!"&vbCr&vbCr&"Смотрите описание.",_
4144, Space(30) & "Ошибка", Title : WSH.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCH = CreateObject("TCScript.Helper") : TCH.Pause = 0
Select Case Panel
  Case "A" F = TCH.GetSrcPath    & TCH.GetInfo("SN") : List = TCH.GetTrgSelectedFiles(1)
  Case "P" F = TCH.GetInfo("TP") & TCH.GetInfo("TN") : List = TCH.GetSrcSelectedFiles(1)
End Select : If F = "" Or Right(F, 1) = "\" Then WSH.Quit
If FSO.FileExists(F) Then Set F = FSO.GetFile(F) Else Set F = FSO.GetFolder(F)
If InStr("1457", Count) Then DC = "CDate(""" & F.DateCreated & """)"
If InStr("2467", Count) Then DM = ",""" & F.DateLastModified & """"
If InStr("3567", Count) Then DA = ",""" & F.DateLastAccessed & """"
If IsEmpty(DM) And Len(DA) Then DA = "," & DA
D = DC & DM & DA : Set F = Nothing
For Each F In List
  If FSO.FolderExists(F) Then
    FFile F : If Rec = 1 Then T = 1 : Set F = FSO.GetFolder(F) : FFolder F
  ElseIf FSO.FileExists(F) Then FFile F End If
Next
With CreateObject("WScript.Shell")
  If T Then .Popup "  Выполнено!", 2, Title & "      ", 4160 Else .SendKeys "^r"
End With

Sub FFolder(Fd)
  For Each Fl In Fd.Files : FFile Fl : Next
  Dim Fl : For Each Fl In Fd.SubFolders : FFile Fl : FFolder Fl : Next
End Sub : Sub FFile(I) : Execute "TCH.SetFileDateAtr CStr(I)," & D End Sub


Last edited by Flasher on Wed Jan 18, 2017 21:51; edited 3 times in total

#129:  Author: Dimsok PostPosted: Wed Jan 18, 2017 20:05
    —
TCHelper.dll это не то же самое, что TCWSHelp.exe?
TCWSHelp.exe установлен, выдаёт ошибку Line 34 Char 13 Error "Object doesn't support this property of method: 'Getinfo'.

#130:  Author: FlasherLocation: Москва PostPosted: Wed Jan 18, 2017 20:06
    —
Нет, не то же. TCScript.dll точнее. Ранее не замечал, что описался.

#131:  Author: Dimsok PostPosted: Wed Jan 18, 2017 20:24
    —
Чего-то не пойму, надо манифесты создавать, или достаточно скачать готовую сборку? И если второе, то куда это скопировать?

#132:  Author: FlasherLocation: Москва PostPosted: Wed Jan 18, 2017 20:27
    —
См. 1, 2 и 7.

#133:  Author: Dimsok PostPosted: Wed Jan 18, 2017 20:48
    —
Тут тоже не работает с параметром "1"

И можно сделать, чтобы молча всё делалось?

#134:  Author: FlasherLocation: Москва PostPosted: Wed Jan 18, 2017 20:59
    —
Шапку внимательно смотрел? Молча - без Popup? Это для рекурсии.

#135:  Author: Dimsok PostPosted: Wed Jan 18, 2017 21:08
    —
%d P 2 - Меняет дату модификации с popup.
%d P 1 - Разве не должно менять дату создания?

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

И какая разница между %d P 2 и %d P 2 1. Во втором случае и должна включаться эта самая рекурсия? У меня никакой разницы между ними.

#136:  Author: FlasherLocation: Москва PostPosted: Wed Jan 18, 2017 21:23
    —
%d P 1 поправил.
Рекурсия для внутренностей выбранных папок.

#137:  Author: Dimsok PostPosted: Wed Jan 18, 2017 21:25
    —
Хм, с %d P 1 заработало. Почему-то раньше ничего не меняло.
Так как выполнять без popups? Ключ рекурсии что есть, что нет.

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

Поправил? А у меня почему-то со старым ни с того ни сего заработало.

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

Всё, с новой версией без окон. Спасибо.

#138:  Author: FlasherLocation: Москва PostPosted: Wed Jan 18, 2017 21:52
    —
Dimsok wrote:
Ключ рекурсии что есть, что нет.
А теперь?
Dimsok wrote:
Всё, с новой версией без окон.
Если стоит рекурсия и выбраны папки, то всплывалка будет.

#139:  Author: Dimsok PostPosted: Wed Jan 18, 2017 22:05
    —
Тепер вроде правильно появляется.

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

#140:  Author: FlasherLocation: Москва PostPosted: Wed Jan 18, 2017 22:08
    —
Про папки знаю (поэтому и не выкладывал раньше), это не мой косяк. Жду ответ автора.

Исправит. Ждём обновление модуля.

#141:  Author: werst PostPosted: Tue Apr 18, 2017 15:28
    —
Всем привет! Проблема такая: скопировал хард, не проставив галку копировать дату и время и естественно, теперь время папок и входящих подпапок ,стало текущее.Задача такая: надо не переписывая файлы (у файлов время осталось оригинальное), поставить в атрибутах папок и входящих подпапок, время как у оригинала т.к. переписывать несколько терабайт не хочеться.Посоветывайте какой скрипт применить т.к запутался, здесь несколько раз переписывали и дополняли для одной папки и с юникодом.Пробовал применить скрипт - тот что на 3 странице

1. создал vbs в директории Total Comander C:\Program Files\Total Commander\Utilites\modif.vbs

2. перетащил файл modif.vbs в панель управления появился ярлык

3. затем по нему изменить

4. команда - там уже стояла "%COMMANDER_PATH%\Utilites\vremy modif.vbs"

5. пораметры - поставил %V %T%M 7

6. путь запуска - поставил %COMMANDER_PATH%\Utilites\modif.vbs

7. выделяю папки в левой и правой частях Total Comander, щелкаю по ярлыку ,тот что создался в панели управления и после мне выдает: не удалось найти указанный файл ошибка 80070002

У меня WIN7 32 и Total Comander 8.51a

Да, и еще, можно ли сделать, чтобы атрибуты папок и каталогов на разделе HDD ,записать в какой-нибудь файл и потом восстановить в случае чего с помощью скрипта ?

#142:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue Apr 18, 2017 15:39
    —
werst
Прочитайте памятку к подфоруму. В частности, полный текст скриптов тут не воспроизводится, на это есть ссылки. Исправлено.
Кроме того, последите за языком ваших сообщений. Замечание за нарушение правил форума.


Last edited by Avada on Tue Apr 18, 2017 20:17; edited 1 time in total

#143:  Author: sa PostPosted: Tue Apr 18, 2017 16:26
    —
werst
Можно попробовать применить плагин NSCopy.
Quote:
NSCopy 2.3 beta
! Теперь атрибуты и дата файла (папки) копируются всегда, даже если файл (папка) уже скопирован!

#144:  Author: FlasherLocation: Москва PostPosted: Tue Apr 18, 2017 19:44
    —
werst
5. Это неверные параметры. Написано же:
Quote:
' Параметры: "<путь к файлу>" %WL <индекс замены> <флаг рекурсии: 1>
Второй параметр тут %WL, а не %T%M, который логично ставить первым.
6. Путь запуска в этом скрипте роли не играет.
7. Выделять нужно найденные через Alt+F7 папки в активной панели, а в пассивной курсор должен стоять на каталоге, с которого считывается дата. См. в памятке 2 пункт снизу. Строку ошибки нужно указывать обязательно.
Снизу шапки скрипта отдельно выделен путь к nircmd, который, конечно же, должен соответствовать реальному расположению.

werst wrote:
можно ли сделать, чтобы атрибуты папок и каталогов на разделе HDD ,записать в какой-нибудь файл и потом восстановить в случае чего с помощью скрипта ?
В отдельном скрипте можно, конечно. Тут ссылку скидывали на нечто подобное.

Last edited by Flasher on Thu Apr 20, 2017 03:03; edited 1 time in total

#145:  Author: sa PostPosted: Wed Apr 19, 2017 15:12
    —
werst wrote:
Пробовал применить скрипт - тот что на 3 странице

Сколько раз его потребуется вызвать, если, судя по описанию в шапке скрипта (изменение … на дату и время указанного файла/папки), за раз переносится временной штамп только одного файла/папки?

#146:  Author: werst PostPosted: Wed Apr 19, 2017 18:21
    —
Flasher
Спасибо за ответ.Попробовал ставить в параметрах %T%M %WL 7 ,но все равно не прет, вылезает ошибка 80070002 не удается найти указанный файл, строка 76 символ 23 ,nircmd стоит в \Utils\nircmd\nircmd.exe.В левой стороне выделяю папку красным , а в правой под курсором ,делал и наоборот.

sa
Так получается, что мне этот скрипт не подойдет? Я думал ,что можно выделить определенное колличество папок на левой стороне и такое же на правой и как бы синронизировать их, перенеся атрибуты соответствующих папок и входящих подпапок с оригинала . Хотел воспользоваться прогами по синхронизации , но там только можно синхонизировать время самих файлов, а не папок.

#147:  Author: sa PostPosted: Wed Apr 19, 2017 20:51
    —
werst wrote:
Так получается, что мне этот скрипт не подойдет?
Это лучше уточнить у автора скрипта.
werst wrote:
но там только можно синхонизировать время самих файлов, а не папок.
При синхронизации в тотале (команда cm_FileSync) можно в диалоге синхронизации (после Сравнить, при нажатых опциях отображения файлов в Показывать:) выделить всё (Ctrl+A) и в контекстном меню выбрать Копировать свойства файла (Ctrl+Alt+L или Ctrl+Alt+R в зависимости от требуемого направления копирования), а затем подтвердить копирование. Скопируются метки даты и времени как файлов, так и папок (кроме тех папок, где в наличии окажутся только подпапки, но не будет ни одного файла).

Last edited by sa on Thu Apr 20, 2017 00:54; edited 1 time in total

#148:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Apr 19, 2017 21:46
    —
werst
Вы продолжаете нарушать правила форума. Никому не нужное полное цитирование предыдущего поста sa, на который давался ответ, удалено. Больше так не делайте.

#149:  Author: werst PostPosted: Wed Apr 19, 2017 23:45
    —
sa
Quote:
Скопируются метки даты и времени как файлов, так и папок (кроме тех папок, где в наличии окажутся только подпапки, но не будет ни одного файла).


У меня так копируются, только атрибуты выделенной папки (с несколькими папками не срабатывает) , да и то не всегда ,закономерности так и не понял , а подпапки (галку с подпапками ставил) остаются с прежней меткой.

#150:  Author: FlasherLocation: Москва PostPosted: Thu Apr 20, 2017 00:43
    —
werst
Если внимательно читать обсуждение с самого начала, то сразу становится ясно, что здешний запрос касался одного источника для группы, а не группы для группы.
К тому же нужно понимать, что группы могут не совпадать по сортировке, именам и кол-ву, поэтому подобный скрипт был бы опасен в плане эксплуатации. Синхронизация куда гуманней в этом плане.
Что касается ошибки, то проблема там может быть только одна, она мной указана - неверный путь в шапке до утилиты. Он менялся в коде или остался прежним? Если второе, то реальный адрес расположения актуальной версии nircmd должен ему в точности соответствовать.

Кстати, а где и кто скрипт-то посоветовал?

Что касается описанного способа в инструменте синхронизации, то работает это в отношении (под)папок, содержащих файлы.
Чтобы не трогать файлы, нужно выделить только заголовки с папками через Ctrl+ЛКМ.

#151:  Author: werst PostPosted: Thu Apr 20, 2017 04:22
    —
Flasher
Quote:
проблема там может быть только одна, она мной указана - неверный путь в шапке до утилиты


Точно! У меня: Utilites\nircmd\nircmd.exe , а в скрипте: Utils\nircmd\nircmd.exe, поэтому и не запускалось, теперь работает ,но не берет подпапки ,хотя флаг рекурсии стоит в параметре %V %T%M 7 1. Пользуюсь скриптом , тот что , для одного файла/папки.

Quote:
Кстати, а где и кто скрипт-то посоветовал?


Узнал просто, искал в поисковике возможность синхронизировать папки и попал на эту тему.Вообще прочитал здесь много тем - по временным атрибутам, видимо многих волнует этот вопрос.

#152:  Author: FlasherLocation: Москва PostPosted: Thu Apr 20, 2017 05:27
    —
werst wrote:
хотя флаг рекурсии стоит в параметре %V %T%M 7 1
Опять первые два неверно указаны. Я с чего начал? И при таких параметрах он никак не смог бы отработать.

#153:  Author: sa PostPosted: Thu Apr 20, 2017 07:52
    —
werst
Также можно попробовать применить плагин CopyTree.
При операции упаковки (Alt+F5) (из панели с выделенными оригинальными папками в панель, где находятся папки с неправильными датами) в настройках этого архиваторного плагина выбрать Копировать временные метки каталогов (и при необходимости, Копировать все три временных метки), а в поле Файлы только типа: указать какой-нибудь несуществующий тип файлов (например, *.tra-ta-ta) – чтобы избежать копирования файлов.

#154:  Author: werst PostPosted: Thu Apr 20, 2017 18:27
    —
Flasher

Quote:
Опять первые два неверно указаны.


Нет, я использую сокращенный скрипт , тот что для одного файла/папки и он срабатывает с параметром : %V %T%M <индекс>, но не берет подпапки, хотя рекурсию ставил 1.Может я не правильно его сократил? Заменив последние 11 строк на: WSH.Run Nircmd & " setfilefoldertime """ & List & """ " & P.

#155:  Author: FlasherLocation: Москва PostPosted: Thu Apr 20, 2017 21:00
    —
werst
Ну, если т-а-а-а-к сокращать, то можно и сокращённым назвать. Я бы точно не смог догадаться, о чём речь. Так и где в приведённом посте хоть что-то про последние 11 строк? Там приведено ровно 3 конкретных строки и не одной больше. Но это касалось правки только для одного файла.
Если говорить ещё и о рекурсии для одной папки, то менять в исходнике нужно это:
Code:
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
на это:
Code:
If FSO.FolderExists(List) Then
  ForFile List, P : If C = 4 Then Set List = FSO.GetFolder(List) : ForFolder List, P
Else ForFile List, P : End If


Last edited by Flasher on Fri Apr 21, 2017 05:00; edited 3 times in total

#156:  Author: werst PostPosted: Thu Apr 20, 2017 22:24
    —
Flasher
Спасибо ! Теперь работает и с подпапками , но теперь другая напасть: стало меняться и время и самих файлов Sad с фотографиями это конечно не айс , т.к. в папках фотки с разным временем. Нельзя ли сделать так, чтобы сами файлы не меняли свои атрибуты?

#157:  Author: FlasherLocation: Москва PostPosted: Fri Apr 21, 2017 02:15
    —
werst
3 строку снизу исходника удалить или закомментировать. И в пред. посте нижний кусок слегка поправил.

#158:  Author: werst PostPosted: Fri Apr 21, 2017 04:26
    —
Flasher
Все! Теперь то что надо! Very Happy Строку закомментил, теперь файлы не трогаются.Да, у меня работает когда: F = Left ,а с последней правкой: List = Left ,нет. Пишет ,что путь не найден.Ну ладно , главное работает. Спасибо!

#159:  Author: FlasherLocation: Москва PostPosted: Fri Apr 21, 2017 04:59
    —
werst wrote:
последней правкой: List = Left ,нет
А, это же делалось для списка. Убрал лишнее.

#160:  Author: sa PostPosted: Fri Apr 21, 2017 11:44
    —
Пожалуй, более правильным названием данной темы было бы "Автоматизация переноса атрибутов и времени изменения файла".

#161:  Author: FlasherLocation: Москва PostPosted: Fri Apr 21, 2017 12:02
    —
Нет смысла для группы источников отдельно тему создавать. Лучше уж "объектов". А там видно будет.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group