Einzelnen Beitrag anzeigen

Kieni

Registriert seit: 16. Jul 2010
17 Beiträge
 
Delphi 2 Desktop
 
#5

AW: [.] und [..] NICHT auflisten.

  Alt 6. Dez 2010, 15:40
grrrrrrrrrrrrrrrrrrrrrrrrr....

ich verstehe es einfach nicht, und so langsam verliere ich die Geduld ..

der folgende code macht im groben und ganzen was er soll: kopiere das R:\ laufwerk nach C:\FSS-Backup.

Code:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI;

type
  TBack_it_up = class(TForm)
    cmd_start: TButton;
    cmd_close: TButton;
    lbl_start: TLabel;
    lbl_stop: TLabel;
    lbl_start_2: TLabel;
    lbl_stop_2: TLabel;
    lbl_status: TLabel;
    procedure cmd_startClick(Sender: TObject);
    procedure cmd_closeClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  Function DeleteDir(DirName : string): Boolean;
  function Sh_FileCopyMove(aWND: HWND; const Source,Dest: string; DoMove: boolean;
          var IsAborted: boolean; Flags: FILEOP_FLAGS=0): Boolean;


var
  Back_it_up: TBack_it_up;

const
  backup_this = 'R:\';
  backup_new = 'C:\Backup-FSS';
  backup_old = 'C:\Backup-FSS(Old)';


implementation

{$R *.dfm}

procedure TBack_it_up.cmd_startClick(Sender: TObject);

var
  IsAborted: boolean;
  f : TSearchRec;
  s : Integer;

begin
  cmd_start.Enabled:=false;

  lbl_start_2.Caption:=DateTimeToStr(Now);
  Application.ProcessMessages;


if DirectoryExists(backup_old) then DeleteDir(backup_old);
if DirectoryExists(backup_new) then MoveFile(backup_new, backup_old);

begin
  s := FindFirst(backup_this + '*.*', faDirectory, f);
  try
    while s = 0 do
    begin
       if f.Attr and faDirectory = faDirectory then
        if (f.name <> '.') and (f.name <> '..') then
        begin
          lbl_status.Caption:='Current directory: ' + f.Name;
          Application.ProcessMessages;
          Sh_FileCopyMove(Back_it_up.Handle, backup_this+f.Name, backup_new, false, IsAborted)
        end;
        s := FindNext(f);
    end;

  finally
    FindClose(f);
  end;
end;

lbl_stop_2.caption:=DateTimeToStr(Now);
lbl_status.Caption:='Backup completed';
end;
Das einzige Manko: Der erste Ordner wird nicht angelegt, sondern alle Unterordner einfach im root Fss-Backup abgelegt ... Ich habe nicheinmal ne idee.... Einer von euch eventuell?

Beispiel:

Laufwerk R:\
Ordner1\01_1
Ordner1\01_2
Ordner1\01_3
Ordner2\02_1
Ordner2\02_2
Ordner2\02_3

Programmdurchlauf

C:\Backup-FSS\01_1
C:\Backup-FSS\01_2
C:\Backup-FSS\01_3
C:\Backup-FSS\Ordner2\02_1
C:\Backup-FSS\Ordner2\02_2
C:\Backup-FSS\Ordner2\02_3

Ich hoffe ihr versteht was ich meine....Ordner1 wird einfach nicht angelegt!

Gruß Kieni

Geändert von Kieni ( 6. Dez 2010 um 15:57 Uhr) Grund: Beispiel hinzugefügt
  Mit Zitat antworten Zitat