-
Что-то такое (накидал сейчас шаблон): @echo off
rem --- Перемещаем хранящиеся копии "вниз" ---
rd /S /Q d:\backup\5
ren d:\backup\4 5
ren d:\backup\3 4
ren d:\backup\2 3
ren d:\backup\1 2
ren d:\backup\0 1
rem --- Папка для текущей копии и дат начала копирования ---
mkdir d:\backup\0
@echo Start: > d:\backup\0\_BackUp_date.txt
date /T >> d:\backup\0\_BackUp_date.txt
time /T >> d:\backup\0\_BackUp_date.txt
rem --- Копирование и дата окончания ---
xcopy /E /H /Y c:\DataBase\*.* d:\backup\0
@echo End: >> d:\backup\0\_BackUp_date.txt
date /T >> d:\backup\0\_BackUp_date.txt
time /T >> d:\backup\0\_BackUp_date.txt Понятно, что при особом желании можно, наверное, и циклик придумаь на переменных bat-файла, вместо нескольких ren (т.е. будет одна внутри цикла), но это уже мелочи. Так же, понятно, при желании легко добавить архивирование, а не просто копирование, но мне это не критично, места много.
-
идея понятна возьму на вооружение...
-
Можно так же пользовать ключик rar.exe ag[формат] Добавить к имени архива текущие дату и время только не очень понятно как потом удалять самые страные. Но и тут явно можно извратиться и придумать способ.
-
> KSergey © (06.11.08 12:33) [18] > > Валигози © (06.11.08 12:13) [14] > > А как получить список файлов в архиве? Использовать компоненту > > > для получения списка файлов а для тестирования утилиту > запускать? > > Да и таскать за собой утилиты... Както кривизной попахивает. > > А типа не судьба попробовать приведенную мною однострочную > команду и убедиться, что она тестирует ВСЕ файлы в расширением > zip в текущей директории и ВСЕ файлы внутри архива? Ну да, > чукча писатель: нашлепать никчемную прогу (в смысле тут > ен нужную) - это проще, чем почитать хелпы.
Абсолютно не вижу причин для споров и тем более для оскорблений. Что мне нужно было - написано вполне подробно в самом вопросе:
> Подскажите пожалуйста, есть ли (и где если есть) такая > компонента которая тестировала бы файлы прямо на лету? > (Желательно чтобы она не таскала за собой dll и была с исходными > кодами)
Непонимаю как можно умудриться понять этот вопрос неправильно? Я вижу всего два варианта ответа: либо просто ссылку на такой компонент либо "в ответ тишина", которая означала бы, что о таком компоненте никто не слышал. Но зачем засорять форум спамом? :( Здесь вроде деньги не дают за количество ответов... Единственный который действительно попытался ответить на мой вопрос - это Slym - даже не поленился скачать компонент "KAZip v.2.0" и порыться в его исходниках :) (что на этом форуме бывает не часто) за что ему Спасибо.
-
> KSergey © (06.11.08 13:10) [22] > Можно так же пользовать ключик rar.exe > > ag[формат] Добавить к имени архива текущие дату и время > > только не очень понятно как потом удалять самые страные. > Но и тут явно можно извратиться и придумать способ.
VBS и дата создания файла?
-
> Skyle © (06.11.08 14:01) [24] > VBS и дата создания файла?
да можно наверное и такой путь: dir с выдачей только имен файлов, отсортированных по дате, старые первыми, потом придумать как задействовать в for только первую строку из этого списка. Мне не удалось придумать, если честно.
Ну а так - да, VBS - это и вовсе наше все, тут что хошь навертеть можно :)
-
> Валигози © (06.11.08 13:39) [23] > Абсолютно не вижу причин для споров и тем более для оскорблений. > Что мне нужно было - написано вполне подробно в самом вопросе:
Очевидно, что компонента эта - не само цель. Цель - сделать удобную систему архивирования. Потому и показано, что сделоть это можно сильно иначе, при этом проблем с компонентой не возникает. Да и вообще с программированием на дельфи, что вполне возможно - правильно.
-
> KSergey © (06.11.08 15:25) [26] > > Валигози © (06.11.08 13:39) [23] > > Абсолютно не вижу причин для споров и тем более для оскорблений. > > > Что мне нужно было - написано вполне подробно в самом > вопросе: > > Очевидно, что компонента эта - не само цель. Цель - сделать > удобную систему архивирования.
Это не моя цель - этим пусть занимаются администраторы. Свою цель как программиста я описал выше.
> Потому и показано, что сделоть это можно сильно иначе, при > этом проблем с компонентой не возникает. Да и вообще с программированием > на дельфи, что вполне возможно - правильно.
Во-первых это форум по Delphi, а не по архивации. И вопросы обсуждаются по Delphi. И я не с рамблера свалился в этот форум. А то что мой вопрос модераторы перебросили в подфорум "Поболтать" - это на их совести. Ну раз перебросили значит я могу и пофилософствовать :) Во-вторых я не совсем представляю как без Delphi (точнее используя только rar.exe) я могу выполнить звою задачу (т.е. свою цель): 1. Открыть файл-шаблон эксэля 2. Пройтись по строкам, разобрать команды и выполнить их (команды - проверить архив, прочитать количество свободного места на дисках серверов и т.д.) 3. Заполнить ячейки эксэля по результатам проверки и сохранить его под именем текущей даты 4. Отправить этот эксэль-файл начальнику по e-mail
-
без дельфи это, пожалуй, можно сделать на VBS. А если не ставить непременное условие "файл-шаблон эксэля", а ограничиться текстовиком - то и вовсе батничком.
-
Хотя, конечно, для начальника расстараться надо, начальники они ж красивые картинки жуть как любят, больше сути. Тут да, понимаю, увы :)
-
> Валигози (06.11.2008 15:45:27) [27]
> А то что мой вопрос модераторы перебросили в подфорум "Поболтать" - это на их совести. Ну раз перебросили значит я могу и пофилософствовать :)
Ты просто еще не знаешь, что могут модераторы.
-
> KSergey © (06.11.08 16:06) [28] > без дельфи это, пожалуй, можно сделать на VBS.
Боюсь, что я не в курсе что такое VBS... Да собственно мне незачем учить другие языки, пока я знаю Delphi... :) > А если не ставить непременное условие "файл-шаблон эксэля", > а ограничиться текстовиком - то и вовсе батничком.
Это не совсем моё условие... Так хочет начальник... > KSergey © (06.11.08 16:07) [29] > Хотя, конечно, для начальника расстараться надо, начальники > они ж красивые картинки жуть как любят, больше сути. Тут > да, понимаю, увы :)
Ага. Вместо того чтобы каждое утро битый час практически вручную заполнять файл эксэля, думаю, напишука лучше утилитку, которая сама будет всё делать, а я лучше в это время в интернете что нибудь почитаю... :) > Anatoly Podgoretsky © (06.11.08 16:20) [30] > > Валигози (06.11.2008 15:45:27) [27] > > > А то что мой вопрос модераторы перебросили в подфорум > "Поболтать" - это на их совести. Ну раз перебросили значит > я могу и пофилософствовать :) > > Ты просто еще не знаешь, что могут модераторы.
Да, давненько я не заходил на этот форум... А раньше, помню, даже отвечал на вопросы... Кстати, я нашёл ещё одну компоненту которая может извлекать из zip-архива в поток (в TStream): http://tpabbrevia.sourceforge.netВ ней, к сожалению, нет (или я не нашёл) фунции тестирования, но можно тестирование выполнить по-другому. Для её тестирования написал небольшой класс:
type
TNullStream = class(TStream)
protected
procedure SetSize(NewSize: Longint); override;
procedure SetSize(const NewSize: Int64); override;
public
FSL: TStringList;
constructor Create();
function Read(var Buffer; Count: Longint): Longint; override;
function Write(const Buffer; Count: Longint): Longint; override;
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
end;
constructor TNullStream.Create;
begin
FSL:=TStringList.Create;
end;
function TNullStream.Read(var Buffer; Count: Integer): Longint;
begin
FSL.Add('Read::'+IntToStr(Count));
end;
function TNullStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
const
cc: array[TSeekOrigin]of String = ('soBeginning', 'soCurrent', 'soEnd');
begin
FSL.Add('Seek::'+IntToStr(Offset)+'::'+cc[Origin]);
end;
procedure TNullStream.SetSize(NewSize: Integer);
begin
inherited;
FSL.Add('SetSize::'+IntToStr(NewSize));
end;
procedure TNullStream.SetSize(const NewSize: Int64);
begin
inherited;
FSL.Add('SetSize::'+IntToStr(NewSize));
end;
function TNullStream.Write(const Buffer; Count: Integer): Longint;
begin
FSL.Add('Write::'+IntToStr(Count));
Result:=Count;
end;
И когда выполняю этот код:
procedure TForm1.Button1Click(Sender: TObject);
var
ss: TNullStream;
begin
ss:=TNullStream.Create;
AbZipKit1.OpenArchive('C:\08-11-06.zip');
Edit1.Text:=AbZipKit1.Items[1].FileName;
AbZipKit1.ExtractToStream('1Cv77.dat', ss);
AbZipKit1.CloseArchive;
Memo1.Lines.Assign(ss.FSL);
ss.Free;
end;
Возвращает мне в Memo1: Seek::0::soCurrent Write::32768 Write::32768 .................... Write::32768 Write::32768 Write::58949 Seek::0::soCurrent Осталось только этот класс переделать, чтобы он вычислял CRC32 и после чего сравнивать с тем который в архиве прописан и порядок :) Этим я уже дома займусь - пора идти домой...
-
>Валигози © (06.11.08 17:12) [31] >Для её тестирования написал небольшой класс:
Кто мешал включить голову и сделать все это до того, как создавать тему?
-
> сюжетнаялиния (06.11.08 17:21) [32] > >Валигози © (06.11.08 17:12) [31] > >Для её тестирования написал небольшой класс: > > Кто мешал включить голову и сделать все это до того, как > создавать тему?
До этого мешало то, что я эту компоненту не нашёл. Там же ясно написано? Я разве не русским языком написал? Включай глаза и смотри. Цитирую: > Кстати, я нашёл ещё одну компоненту которая может извлекать > из zip-архива в поток (в TStream): http://tpabbrevia.sourceforge. > net
-
О, да... я не заметил! Извини меня пожалуйста, Валигози! Ты прав! Прав!
-
я не смог скачать инструкцию по компоненте, но у меня есть сильное пдозрение, что она сама умеет проверять CRC и возвращать признак "удачно распаковалось" или "неудачно". Ну во всяком случае я бы сделал так.
-
> KSergey © (06.11.08 18:32) [35] > я не смог скачать инструкцию по компоненте, но у меня есть > сильное пдозрение, что она сама умеет проверять CRC и возвращать > признак "удачно распаковалось" или "неудачно". > Ну во всяком случае я бы сделал так.
Совершенно верно! Именно так всё и оказалось на самом деле :) Если после извлечения файла контрольная сумма не совпадает - вызывается событие OnProcessItemFailure :)
|