Avatar billede chadk Nybegynder
10. april 2004 - 02:46 Der er 8 kommentarer og
1 løsning

Rename flere files

en der vil hjælpe mig med at skifte navn på filer(alle, vis de hedder .jpg, .gif,.png, ) i et dictory med bestemt navn og et tal der skifter for hvert tal?
Avatar billede abpdk Nybegynder
10. april 2004 - 02:55 #1
Hvad mener du med "og et tal der skifter for hvert tal"!?
Avatar billede fixxxer Nybegynder
10. april 2004 - 04:08 #2
jeg gætter på at du vil kunne give alle filerne i en mappe navne som FILE0001, FILE0002 osv korrekt?
Avatar billede fixxxer Nybegynder
10. april 2004 - 04:10 #3
uniten:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, ToolEdit, ShellAPI, ShlObj, FileCtrl, ComCtrls,
  ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Button1: TButton;
    ListBox1: TListBox;
    Edit4: TEdit;
    Button2: TButton;
    FileList1: TFileListBox;
    ProgressBar1: TProgressBar;
    Label5: TLabel;
    Timer1: TTimer;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses fmxUtils;

{$R *.dfm}

function IntToNum(int: Integer): string;
begin
  //10000
  case int of
    1..9: Result := '0000' + IntToStr(int);
    10..99: Result := '000' + IntToStr(int);
    100..999: Result := '00' + IntToStr(int);
    1000..9999: Result := '0' + IntToStr(int);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  S: string;
begin
  S := edit4.Text;
  SelectDirectory('Select working folder', '', S);
  edit4.Text := S;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  I, Num: Integer;
begin
  ListBox1.Clear;

  FileList1.Directory := edit4.Text;
  Num := StrToInt(Edit2.Text);

  ProgressBar1.Max := FileList1.Items.Count;

  for I := 1 to FileList1.Items.Count do begin
    RenameFile(FileList1.Items[I-1], ExtractFilePath(FileList1.Items[I-1]) + Edit1.Text + IntToNum(Num) + Edit3.Text);
    Num := Num + 1;
    ProgressBar1.StepIt;
    ListBox1.Items.Add(' Changing ' + FileList1.Items[I-1] + ' to ');
    ListBox1.Items.Add('  ' + ExtractFilePath(FileList1.Items[I-1]) + Edit1.Text + IntToNum(Num) + Edit3.Text);
    Label5.Caption := 'Processing file ' + FileList1.Items[I-1];
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label5.Update;
  ProgressBar1.Update;
  ListBox1.Update;
end;

end.


dfm:

object Form1: TForm1
  Left = 254
  Top = 142
  Width = 495
  Height = 387
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 24
    Top = 16
    Width = 53
    Height = 13
    Caption = 'Input folder'
  end
  object Label2: TLabel
    Left = 24
    Top = 52
    Width = 73
    Height = 13
    Caption = 'File name prefix'
  end
  object Label3: TLabel
    Left = 24
    Top = 80
    Width = 89
    Height = 29
    AutoSize = False
    Caption = 'File name number start'
    WordWrap = True
  end
  object Label4: TLabel
    Left = 24
    Top = 116
    Width = 64
    Height = 13
    Caption = 'File extension'
  end
  object Label5: TLabel
    Left = 20
    Top = 340
    Width = 32
    Height = 13
    Caption = 'Label5'
  end
  object Edit1: TEdit
    Left = 116
    Top = 48
    Width = 121
    Height = 21
    TabOrder = 0
    Text = 'photo'
  end
  object Edit2: TEdit
    Left = 116
    Top = 84
    Width = 65
    Height = 21
    TabOrder = 1
    Text = '1'
  end
  object Edit3: TEdit
    Left = 116
    Top = 112
    Width = 41
    Height = 21
    TabOrder = 2
    Text = '.jpg'
  end
  object Button1: TButton
    Left = 396
    Top = 120
    Width = 75
    Height = 25
    Caption = 'Change'
    TabOrder = 3
    OnClick = Button1Click
  end
  object ListBox1: TListBox
    Left = 20
    Top = 156
    Width = 449
    Height = 161
    ItemHeight = 13
    TabOrder = 4
  end
  object Edit4: TEdit
    Left = 116
    Top = 16
    Width = 241
    Height = 21
    TabOrder = 5
  end
  object Button2: TButton
    Left = 356
    Top = 16
    Width = 25
    Height = 22
    Caption = '...'
    TabOrder = 6
    OnClick = Button2Click
  end
  object FileList1: TFileListBox
    Left = 288
    Top = 56
    Width = 189
    Height = 45
    ItemHeight = 13
    TabOrder = 7
    Visible = False
  end
  object ProgressBar1: TProgressBar
    Left = 20
    Top = 320
    Width = 449
    Height = 16
    Min = 0
    Max = 100
    Step = 1
    TabOrder = 8
  end
  object Timer1: TTimer
    Interval = 100
    OnTimer = Timer1Timer
    Left = 180
    Top = 112
  end
end
Avatar billede chadk Nybegynder
10. april 2004 - 09:46 #4
Kanont svar, det virker:D
Avatar billede fixxxer Nybegynder
10. april 2004 - 14:57 #5
jeg er selv igang med en udbygning der også kan lave thumbnails. Det lyder lidt som sådan noget du skal lave :P
Avatar billede fixxxer Nybegynder
10. april 2004 - 14:58 #6
btw tak for point, det er ikke hver dag man får 200 point :)
Avatar billede abpdk Nybegynder
10. april 2004 - 15:36 #7
En alternativ (og lidt mindre) løsning:

procedure RenameFiles(dir: String);
var
  sr: TSearchRec;
  i: integer;
begin
  if FindFirst(dir+'\*', faAnyFile, sr)=0 then begin
    i:=0;
    repeat
      if (sr.name<>'.') and (sr.name<>'..') then begin
        RenameFile(dir+'\'+sr.name, dir+'\'+Format('FILE%.4d', [i]));
        inc(i);
      end;
    until FindNext(sr) <> 0;
      FindClose(sr);
  end;
end;
Avatar billede stefmeister Nybegynder
10. april 2004 - 19:01 #8
til abpdk -> egentlig er den jo ikke særlig meget mindre, da den anden indeholder samtligefunktioner i hele programmet. Med alle knapper osv. Den anden er jo faktisk kun nogle få linier kortere ved selve proceduren.
Avatar billede abpdk Nybegynder
10. april 2004 - 19:58 #9
stefmeister>> Nu skrev jeg jo også kun at den var lidt mindre. Iøvrigt kan jeg ikke finde det du kalder "selve proceduren", da løsningen lader til at være "spredt" ud over flere forskellige event-handler procedure.

Det var ikke et forsøg på at konkurrere, men blot at tilbyde en alternativ og lidt mere "udkogt" løsning, som ikke kræver visuelle komponter.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester