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

Изменить дату создания каталогов по дате входящих файлов
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
c930



Joined: 15 Dec 2004
Posts: 322

Post (Separately) Posted: Sun Jan 30, 2011 17:45    Post subject: Изменить дату создания каталогов по дате входящих файлов Reply with quote

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

Единственный способ, что я нашёл, это выделить (поиском или вручную в режиме CTRL+B файлы доноры и скопировать их временно в родительский каталог), а затем последоватьельно для каждого каталога копировать дату создания из нужного файла посредством кнопки
Load from file under cursor/Загрузить из файла под курсором в подменю Изменить атрибуты...

Или есть какой-нибудь более элегантный способ штатными средствами или с помощью плагинов? Вроде плагинов для работы с атрибутами не нашёл я.

Что интересно, если файл-донор находится в одном каталоге с подкаталогом у которого нужно сменить дату, то всё получается: выделяем подкаталог, ставим маркер на файл-донор и лезем в меню...
Но у меня файлы-доноры находятся в этих подкаталогах, и если я выделяю родительский каталог, маркер ставлю на файл - то после захода в меню смены атрибутов выделение перепрыгивает на файл под маркером Crying or Very sad. Из-за этого и приходится копировать файлы в родительский каталог.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1725
Location: Арзамас

Post (Separately) Posted: Sun Jan 30, 2011 18:38    Post subject: Reply with quote

Есть touch.exe, но она не умеет работать с папками.
Найдёшь умеющую работать с папками – отблагодарю батником, ибо самому нужна.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4744
Location: Ростов-Дон

Post (Separately) Posted: Tue Feb 01, 2011 19:25    Post subject: Reply with quote

Просто дату создания папки нужно ставить по самой ранней дате создания файлов и подпапок? Тут за полчаса можно набросать утилитку.


Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="FixDate.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="FixDate.7z"

N3q8ryccAAN/zRiCcAYAAAAAAABhAAAAAAAAAOJvEQAAJpaOcAAX9+wFu+r0/5QBL0TuTr0JVBUh
kFDQQT8gseCX93F00wDLXJDMvREdOBqNaG5sWNZQEflPWXSbNDUAWWnwSqPplaPnnKEenuBwAT85
2ISeoQkr1qALX3zq/1joJlkVw3RhKHShD0IDMm6YxdJHLiMquwkt8yZjxhKHhUZVf9UoHoAuAm0i
y/hauKNfWnQF3G1+6F0H1n0h6yQg+K7YZFaIZzrl2IBLvrAhC9qZTLgS9kuBjv2/yOOis6ldHWMT
zOHxBxLIP0buWUeFzcmpbUWFD7mFTSw4jnDLcLYs9AXufiuICovNgLJpt+NdOxGSigDXH5cd4y5E
ocB0MQdnKgbUhgo6WQmc0A3GgSbJ3/SUgrlLY/HhHm+/9DUN6rehhRJGKgHqq/1Fh/Kyu7bTjf3B
5+WHUTADuFHK9UogUqu7SLRvCMFd4p/plMfA6k0Y2zDwvye+iL6ybD8CDKLI22Ww3VP24KaI8sjC
ZWGy7biJNa2hfxbd3zpcnS6YS8NNOJ+GH/bSwFoYxVz7IKnektehaHde6rLQef/ikV+CD3sUbm/l
xeCCwGnyd+LDRbfd2gVPFoKieFviDPEeMZ8UVL6nMlKUkO+X85VBT5RMG8Ca6S88stUeEx1B/5D+
RVbkaULuKY7UzVc1q+lo8ZwNVkHamilT6fF1sO8TFJcIsdE01Rtvt1xgH6kMjVOecJ7mQIpMYJci
YyR7XCZVGgRiOHR52RBHeUuL3dF4yEY1btRZmR/eAEZKBG8NG+kB2PwiyopVII4o72w5lTCzEvNg
b/uI4XNqD2OcEKlfjlEooabojZhQLLZZ0UJeeo09kIq0zmJn++67kuPwFgOyFA+kiBuLKm6EWUkM
Up33HcadeX78pa3klMAR+t72axB5u1AalA3/acVsaG3V0gVBNTbcjAyPGaC6sbmvtH1JXrMHw8lh
hmFxoYP4iT2teGg8BhS4ACpYV3nfoX1GF/qIxr0bQLBkk7FDUKSu1wOPL6ev7rP4DFY2cc/Y7ehq
1k2Jw8OdMkkxwyjPenf47A/fJIZ0Bt9XjuW6HQy/Qzdmf9e7gVf9wBcNEZrnk2l814HXI4RXabo8
QT199Z3ONYjKrXjbNtQcVbOOLvlRfQu9aZLP4XSUM0V2IETM3KOGDEyQ2R1wx9uc072EVpANGavw
/dE1kqPhBCVHQQUdgevRloGE+318X4e0i17msvCLDlLlNb8+s5W+8gC48Dw6UZ/Pq8aorCzHUfBl
bjU1FrjItj1LWRg8SuB5dZR/fDhwQzzg7Icw5iympMOji5XusawnECUzX/8ZgxARqMvLpCx/7Ctq
LWI9jv9Nqzk94T+nqOeKOGlotXdojnWeCs49SWqvc0rUcClNaybPytPuYKDz1ubmesxmL5uDS4oy
U0GizbjhccBWeAuDxfh4c7OthkaVMOzBAL1H2WHmr1vUIFtUgi5VJDqPMPvAh+lfJV57Z2f0bN9O
sChZJwuZuPCDpDTgCsgPSwWDdKcttNmbfZ1NDAtMH7P3exM9FiaZayNfcjg9QRyrDqcLHES+Afe7
U8TVFC4lXT1Liiqg/8Q3N9RwiyFZAuXMzoi13YhzGOIHe2usXQAslSU5dycsAOktN8DneLGm1HYm
irqb6N505dSkiDlsFUdmGMbdqU54WambFw68wzpOe8AcB5O3xIheeMPdx3KORDExZeV9HPItpFVN
KRR6S1BLRw6GfMvAHvsRWbcS8nNZUvNdFxfbIY4mhfNeqoa0XZQeuN6mFcTLqusxHNS29chvVYMO
Q/Wvea9DKQxLn81jb0b8IeHH0gmxpROyg5ZMzrQj/Wvo5Y+HBfRKlKhTlRJmRmjCbZHoNbzMASbw
8rDtLpituBidHQyOGAxhWB1i1HanX6G6mL9KXX2rVvbcqaTmMn8hjN1NQ7EmE39V4aJXyQoynxIp
gYGtTiLCJ87e0Yh0EQrnUy1QdUEPb56sNuAzForIIwjy4mLmwXsKn5USt4vfLKV9oRqBcKk5r5LC
1mLEpFZ/YtdDQqzfWuhO5gN16c/7SHdpVCPIdkxWTr7NNj4/Bt/9EPWFmBUJDvH5q2mTISiI2LsO
jA8o0ylJaGN5cUr0v89PHNIi/NCDpLLG/DF6IdDQUgim89QClET84vI7RizkyNjIlGpNks0rKkA+
J5rgPKzKVGCwD736nwnZIRiHesN5PO3sbWXAAQQGAAEJhnAABwsBAAIjAwEBBV0AAAEABAMDAQMB
AAyQAJAAAAgKAZoQvvwAAAUBERkARgBpAHgARABhAHQAZQAuAGUAeABlAAAAFAoBAAC65xYOw8sB
FQYBACAAAAAAAA==

(обновлено - исправляет дату модификации по самой поздней дате элементов)

Рекурсивно не делал - Толик без проблем набросает батник. Smile
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Thu Feb 03, 2011 13:04; edited 4 times in total
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 322

Post (Separately) Posted: Wed Feb 02, 2011 05:33    Post subject: Reply with quote

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

Надеюсь Tol!kу утилита будет полезна тоже!

Quote:
дату создания папки нужно ставить по самой ранней дате создания файлов и подпапок?
Нет в моём случае нужно изменить дату создания заданного каталога и всех дочерних (входящих в него) в идеале, т.к. их даты также потерялись, в соответствии с датой самого нового входящего файла, а не самого старого.

Но у меня чё-то не работает твоя утилита, дата заданного каталога не меняется...
(Кроме того, у меня видимо устаревшие понятия о дате создания, оставшиеся со времён DOSа. Меня интересует дата, которая отображается на панелях командера в режиме FULL, а это судя по данным, выдаваемым видимо встроенным контентным плагином TC есть - Дата модификации.)
...но ни та, ни другая дата у меня не изменяются при запуске утилиты твоей, и сообщения вроде тоже не выдаются никакие (может и не должны). Может я синтаксис неверно задаю.

Например, заданный каталог IMAX (в котором лежат файлы "доноры") имеет путь c:\TEMP\IMAX\
туда же в TEMP\ я и утилиту положил для простоты. Находясь в TEMP\ задаю:
FixDate c:\TEMP\IMAX\
и так пробовал
FixDate IMAX\, и так
FixDate IMAX
дата каталога не изменяется.

P.S. ОС Win XP
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4744
Location: Ростов-Дон

Post (Separately) Posted: Wed Feb 02, 2011 08:32    Post subject: Reply with quote

Да там возни не больше, чем с батником. Smile

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

Рекурсивность проще сделать в батнике - проход по подкаталогам с вызовом утилиты, потом вызов для заданного каталога.

Батник тут простой:
Code:
@echo off
if -%1==- echo Parameters: %%WL &pause &goto :EOF
if -%1==-go goto do_work
for /f "usebackq delims=" %%f in (`type %1`) do call %0 go "%%f"
pause
goto :EOF

:do_work
for /d %%d in (%2\*) do call %0 go "%%d"
echo %2
"%~dp0FixDate.exe" %2\
Файл FixDate.exe должен лежать рядом, параметры кнопки в тотале - %WL, применять для выделенного набора папок.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Thu Feb 03, 2011 13:00; edited 1 time in total
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2277

Post (Separately) Posted: Wed Feb 02, 2011 12:39    Post subject: Reply with quote

MVV wrote:
дата модификации каталога - штука ненадежная, система может изменять её сама.
Вот тут-то утилитка и окажется полезной.

Только почему-то у меня не всегда подхватывается дата самого свежего файла, притом что, если этот файл оставить единственным в каталоге или если дату файла изменить на текущую, то дата подхватывается…
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4744
Location: Ростов-Дон

Post (Separately) Posted: Wed Feb 02, 2011 13:59    Post subject: Reply with quote

По идее, должно работать. Я перечисляю все файлы по маске * в заданной папке:
Code:
      do {
         WCHAR* p=wfd.cFileName;
         if (*p=='.'&&(*(p+1)==0||*(p+1)=='.'&&!*(p+2))) continue;

         if (!date_set || CompareFileTime(&wfd.ftCreationTime, &max_modify)>0) {
            max_modify=wfd.ftLastWriteTime;
            date_set=1;
         }
      } while (FindNextFileW(hfd, &wfd));

А потом ставлю дату max_modify для папки. Сравнивать даты доверяю системной функции CompareFileTime.

Блин, щас смотрел на этот кусок и нашел ошибку. В условии сравнения-то я забыл исправить ftCreationTime на ftLastWriteTime. Laughing

Обновил пост с архивом.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Wed Feb 02, 2011 14:21; edited 1 time in total
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2277

Post (Separately) Posted: Wed Feb 02, 2011 14:08    Post subject: Reply with quote

А я правильно понял, что файлы должны сравниваться по дате модификации?

Ещё бы в заголовке темы поменять дату создания на дату модификации.

Add
MVV wrote:
Обновил пост с архивом.
Теперь утилита требует MSVCR100.dll. Так и должно быть?
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 322

Post (Separately) Posted: Wed Feb 02, 2011 20:28    Post subject: Reply with quote

MVV
Новая версия FixDate.exe
MD5:cd8bac45442c1976e336b27930cc51a1
при запуске из-под XP требует, как написал выше sa библиотеку MSVCR100.dll; Win2k говорит, что FixDate.exe не является приложением Win32; под Win98se не запускается, говорит ОС сменить надо.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1725
Location: Арзамас

Post (Separately) Posted: Wed Feb 02, 2011 20:53    Post subject: Reply with quote

[off]
c930 wrote:
Надеюсь Tol!kу утилита будет полезна тоже!
Мне она нужна немного для других целей. В частности мне нужно передавать дату параметром и обрабатывать рекурсивно желательно самой утилитой, чтобы не плодились сущности.
[/off]

Нашёл GNU touch, которая работает с папками http://forum.wincmd.ru/viewpost.php?p=73646 (Пишут, что Cygwin touch тоже)

Code:
@echo off &chcp 1251 >nul &setlocal enableextensions
for /d /r %%d in (*) do call :t "%%d"
goto :eof

:t
for /f "delims=" %%t in ('dir /b/a-d/o-d %1') do touch.exe -r "%~1\%%t" %1 &goto :eof

запустить в корневой папке


Last edited by Tol!k on Fri Feb 11, 2011 12:33; edited 3 times in total
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 322

Post (Separately) Posted: Wed Feb 02, 2011 20:55    Post subject: Reply with quote

Quote:
Потом, дата модификации каталога - штука ненадежная, система может изменять её сама.
Дата создания ещё более ненадёжная штука, как следует из моих экспериментов, она меняется при перемещении каталога. А Дата модификации, если соответствующую галочку в настройках TC включить - остаётся неизменной при этом. Кроме того Дата модификации отображается в панелях TC в стандартном режиме FULL (который у меня всегда включён).
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4744
Location: Ростов-Дон

Post (Separately) Posted: Wed Feb 02, 2011 23:22    Post subject: Reply with quote

Да, даты создания вообще ненадежны, а для папок - и даты модификации.

Quote:
Теперь утилита требует MSVCR100.dll. Так и должно быть?
Блин, умудрилась же чё-то вызвать из CRT, несмотря на переопределённую точку входа. Компилил просто на 10-ке, и забыл, что в новом проекте по дефолту такая вредность - подкупил размер, который меньше, чем в 6-ке, хотя при более правильной компиляции он ещё меньше - в очередной раз поправил пост.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
c930



Joined: 15 Dec 2004
Posts: 322

Post (Separately) Posted: Thu Feb 03, 2011 04:33    Post subject: Reply with quote

Tol!k
Утилита из второго твоего поста
touch.exe 38,912 20.04.2005 20:41.20
md5: 6171241e363b229e0496fa5c242caa41
при запуске без параметров выдаёт сообщение об ошибке:
The procedure * could not be located in the DLL libintl3.dll

Пробовал на двух разных машинах, под Win XP и 98se.

Из батника - столько раз, сколько каталогов найдёт.

MVV
Утилита сама теперь вроде работает, а вот с кнопкой и батником - нет,
из-за пробелов похоже в именах заданных каталогов.
Спать пошёл, завтра ещё попробую.

Кнопка у меня такая:
Code:
TOTALCMD#BAR#DATA
FixDate.bat
%WL
wcmicons.dll,7
FixDate
%COMMANDER_PATH%\UTILITIEs\FixDate\

-1
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Feb 03, 2011 08:42    Post subject: Reply with quote

c930 wrote:
из-за пробелов похоже в именах заданных каталогов.
А что мешает %WL заключить в кавычки?
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2277

Post (Separately) Posted: Thu Feb 03, 2011 10:32    Post subject: Reply with quote

Flasher wrote:
А что мешает %WL заключить в кавычки?

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

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


Powered by phpBB © 2001, 2005 phpBB Group