Save Date & Time

Название SaveDateTime
Имя файла (*.txt) SaveDateTime.txt
Описание Сохраняет в файл дату и время файлов
Автор Вахмурка
Параметры ("%L", "%P")
Вызываемые плагины file
Иконка
Версия 1.0
Дата обновления 29.01.2006
local InFile = file.open(arg(1), "r")
local OutName = arg(2) ++ "_NameDateFile.lst"
local OutFile = file.open(OutName, "w")
local Str, Counter, List, i, Date, Time, Temp
flag clear 1

if(InFile > 0) do
	for(not(file.eof(InFile))) 
		Str = file.readstring(InFile)
		if(Str != 0)
			Counter = Counter + 1

	endfor
else
	messagebox("ok error", "File not opened", "FILE plugin error #1")
	quit
endif

if(OutFile <= 0) do
	messagebox("ok error", "File not opened", "FILE plugin error #2")
	quit
endif

if(Counter == 1) do
	List = file.listfiles(arg(2), 0, 0)
	Counter = line(List, 0)
	flag set 1
else
	file.restart(InFile)
endif

for(i = 0; i < Counter; i = i + 1)
	if(pproflag(1)) do
		Str = line(List, i + 1)
	else
		Str = file.readstring(InFile)
	endif
	if(Str == OutName)
		jump Next

	file.writeline(OutFile, file.nametype(Str))
	Temp = file.getdate(Str, "c")
	Date = select(Temp, 8)
	file.writeline(OutFile, Date)
	Time = select(Temp, 9, 14)
	file.writeline(OutFile, Time)
	Temp = file.getdate(Str, "m")
	Date = select(Temp, 8)
	file.writeline(OutFile, Date)
	Time = select(Temp, 9, 14)
	file.writeline(OutFile, Time)
@Next
endfor

file.close(InFile)
file.close(OutFile)

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

Данная пара скриптов реализует в определенном смысле наиболее общий подход к присвоению даты и времени создания и изменения одного файла другому. Другие скрипты, предназначенные для частных случаев: CopyDate и BatchCopyDate.

Скрипт SaveDateTime сохраняет дату и время создания и изменения выбранных файлов в файл с именем _NameDateFile.lst в текущей директории. Редактировать полученный файл не только не имеет смысла, но и не рекомендуется. Зато его можно переименовать и/или записать в определенное место для последующего использования скриптом LoadDateTime.

Файлы для сохранения их даты и времени можно выбрать двумя способами: если файлы выделены в группу, дата и время будут сохранены только для них. В противном случае будут сохранены дата и время всех файлов в текущей директории.


Load Date & Time

Название LoadDateTime
Имя файла (*.txt) LoadDateTime.txt
Описание Восстанавливает из файла дату и время файлов
Автор Вахмурка
Параметры ("%L", "%P")
или
("%L", "%P", "полный_путь_файла")
Вызываемые плагины file, vec
Иконка
Версия 1.0
Дата обновления 29.01.2006
local InFile = file.open(arg(1), "r")
local OutName = ifelse(arg(0) == 2, arg(2) ++ "_NameDateFile.lst", arg(3))

if(file.validpath(OutName) != 1) do
	messagebox("ok error", "Invalid file path " ++ OutName, "FILE plugin error #1")
	quit
endif

local OutFile = file.open(OutName, "r")
local Str, Counter, List, i, j, Date, Time, Temp, Rex
flag clear 1

if(InFile > 0) do
	for(not(file.eof(InFile))) 
		Str = file.readstring(InFile)
		if(Str != 0)
			Counter = Counter + 1

	endfor
else
	messagebox("ok error", "File not opened", "FILE plugin error #3")
	quit
endif

if(Counter == 1) do
	List = file.listfiles(arg(2), 0, 0)
	Counter = line(List, 0)
	flag set 1
else
	file.restart(InFile)
endif

if(OutFile > 0) do
	for(not(file.eof(OutFile))) 
		Str = file.readstring(OutFile)
		if(Str != 0) do
			Rex = Rex + 1
		endif
	endfor
else
	messagebox("ok error", "File not opened", "FILE plugin error #3")
	quit
endif

if(Rex % 3 != 0) do
	Str = "File " ++ OutName ++ " seems to be corrupted"
	messagebox("ok error", Str, "LoadDateTime Script")
	quit
endif

DT = vec.create(Rex)
if(DT == 0) do
	messagebox("ok error", "Vector not created", "VEC plugin error")
	quit
endif

file.restart(OutFile)

for(i = 0; i < Rex; i = i + 1)
	Str = file.readstring(OutFile)
	if(Str != 0)
		DT[i] = Str

endfor

file.close(OutFile)

for(i = 0; i < Counter; i = i + 1)
	if(pproflag(1)) do
		Str = line(List, i + 1)
	else
		Str = file.readstring(InFile)
	endif
	if(Str == OutName)
		jump Next

	for(j = 0; j < Rex; j = j + 1)
		Temp = arg(2) ++ DT[j]
		if(file.validpath(Temp) == 1 && Temp == Str) do
			Date = DT[j + 1]
			Time = DT[j + 2]
			file.setdate(Str, "c", Date, Time)
			Date = DT[j + 3]
			Time = DT[j + 4]
			file.setdate(Str, "m", Date, Time)
			break
		endif
	endfor

@Next
endfor

file.close(InFile)
vec.unload

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

После искажения (как правило, нежелательного) даты и времени создания и/или изменения файла нужную информацию можно восстановить из списка, созданного скриптом SaveDateTime. Если у скрипта LoadDateTime два параметра, то файл-список с именем _NameDateFile.lst будет искаться в текущей директории. Если же задан третий параметр, то он должен указывать полное имя файла-списка.

Файлы, дату и время которых следует изменить, выбираются так же, как и для скрипта SaveDateTime: если выделена группа, то измененям будут подвергнуты файлы из нее, в противном случае, если ничего не выделено - все файлы в текущей директории.


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