BatchCopyDate

Название BatchCopyDate
Имя файла (*.txt) BatchCopyDate.txt
Описание Присваивает дату и время создания и изменения файлов в противоположной панели (источник) одноименным файлам в текущей панели (приемник)
Автор Вахмурка
Параметры "%P", "%T"
Параметр 1: директория, содержащая файлы с измененными датой и временем
Параметр 2: директория, содержащая файлы с образцовыми датой и временем
(можно поменять местами в процессе выполнения скрипта)
Вызываемые плагины file, miscplugin, osd
Иконка
Версия 1.1
Дата обновления 16.06.2014

args ToPath, FromPath
local Date, Time, Temp, ToList, ToFiles, FromList, FromFiles, i, j
local One, Other, ToName, FromName
local Counter

local mpDlgText
local mpDlgCaption = "Batch Date & Time Change"
local mpIcon = "QUESTION"

@Start
ToList = file.listfiles(ToPath, 0, 0)
ToFiles = line(ToList, 0)

FromList = file.listfiles(FromPath, 0, 0)
FromFiles = line(FromList, 0)

mpDlgText = "Source path is '" ++ ToPath ++ "' , containing " ++ ToFiles ++ " files."
mpDlgText = mpDlgText ++ "\nTarget path is '" ++ FromPath ++ "' , containing "
mpDlgText = mpDlgText ++ FromFiles ++ " files."
mpDlgText = mpDlgText ++ "\n\nAre you sure to copy date && time from " ++ FromPath
mpDlgText = mpDlgText ++ " to " ++ ToPath
mpDlgText = mpDlgText ++ "?\nPress 'Exchange' to exchange Source <-> Target"

Temp = MiscPlugin.messagebox(1, "&Go!", "E&xchange", "&Cancel")
if(Temp == "&Cancel") do
	quit
elseif(Temp == "E&xchange")
	Temp = ToPath
	ToPath = FromPath
	FromPath = Temp
	jump Start
endif

for(i = 1; i <= ToFiles; i++)
	One = line(ToList, i)
	ToName = file.nametype(One)
	ToName = case("lower", ToName)
	for(j = 1; j <= FromFiles; j++)
		Temp = "Comparing " ++ i ++ " of " ++ ToFiles ++ " with " ++ j
		Temp = Temp ++ " of " ++ FromFiles
		osd.show(Temp, "INFINITE", "30", "Arial", "-1", "255 000 000")
		Other = line(FromList, j)
		FromName = file.nametype(Other)
		FromName = case("lower", FromName)
		if(ToName == FromName) do
			Counter++
			Temp = file.getdate(Other, "c")
			Date = select(Temp, 8)
			Time = select(Temp, 9, 14)
			file.setdate(One, "c", Date, Time)
			Temp = file.getdate(Other, "m")
			Date = select(Temp, 8)
			Time = select(Temp, 9, 14)
			file.setdate(One, "m", Date, Time)
		endif
	endfor
endfor

osd.hide
mpIcon = "D:\Graphics\Icons\User\CopyDate.ico"
if(Counter == 0) do
	mpDlgText = "No equal names found"
else
	mpDlgText = "Time && date is changed for " ++ Counter ++ " of " ++ ToFiles ++ " files"
endif

MiscPlugin.messagebox(1, "&OK")

Комментарии:

Идея здесь та же, что и в скрипте CopyDate. Допустим, вы с приятелем съездили в отпуск, он наснимал фотографий и записал на сидюк. Всем ваш приятель хорош, но снимать не умеет. Одну фотку надо просветлять, в другой подтянуть цвета, третью откадрировать. В результате кропотливой работы у вас на жестком диске - красивые картинки... с временем редактирования, а на его сидюке - ужасные, но зато из атрибутов ясно, в понедельник они сделаны или в чеверг, утром или вечером.

В текущей панели Total Commander переходим на первую директорию, в противоположной открываем сидюк. Имена у файлов одинаковые, даты создания и изменения - разные. Запускаем скрипт на выполнение. Каждый отредактированный файл восстановит атрибуты со своего тезки.

С помощью плагина osd скрипт постоянно докладывает о проделанной работе. Если вам это не надо, просто удалите строки, начинающиеся с osd (их две).


На главную Все о Total Commander PowerPro PowerPro & Total Commander