Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mehrere Dateien gleichzeitig umbenennen. Wie? (https://www.delphipraxis.net/17390-mehrere-dateien-gleichzeitig-umbenennen-wie.html)

DRPEnc 4. Mär 2004 12:39


Mehrere Dateien gleichzeitig umbenennen. Wie?
 
K, ich hab diesen Code gefunden:

Delphi-Quellcode:
var

  f : file;
begin
  OpenDialog2.Title := 'Choose a file... ';
  if OpenDialog2.Execute then
  begin
    SaveDialog1.Title := 'Rename to...';
    if SaveDialog1.Execute then
    begin
      AssignFile(f, OpenDialog2.FileName);
      Rename(f, SaveDialog1.FileName);
    end;
  end;

end;
Kann man diesen so umschreiben, dass man gleich mehrere Dateien umbenennt?

Der folgende Code öffnet ja mehrere Dateien. Diese Dateien haben meistens Leerzeichen und/oder Sonderzeichen wie - / im Namen.

Beispiel: 01. Soundtrack - High Level.ogg

Dies kann aber von einem commandline programm nicht bearbeitet werden. Ergo müssen die Leer- und Sonderzeichen raus. Nur wie...

Delphi-Quellcode:
var i,ii:Integer;
begin
opendialog1.Options:=[ofAllowMultiSelect,ofEnableSizing];  //multiselect erlauben
if not opendialog1.Execute then exit;
begin
if opendialog1.Files.Count>1 then //falls multiselect
begin
for ii:= 0 to opendialog1.Files.Count-1 do
begin
i:=listbox1.items.IndexOf(opendialog1.Files.Strings[ii]);
if i<0 then //falls der Eintrag noch nicht existiert
begin
listbox1.Items.Append(opendialog1.Files.Strings[ii]);
end;
end;
end;
end;
end;

fkerber 4. Mär 2004 12:43

Re: Mehrere Dateien gleichzeitig umbenennen. Wie?
 
Hi!

Du musst mit einer For-Schleife alle Dateien, die du umbenennen willst, durchlaufen.

Ciao fkerber

Steve 4. Mär 2004 12:50

Re: Mehrere Dateien gleichzeitig umbenennen. Wie?
 
Servus,

Du willst also mehrere Dateien auf einen Schlag umbenennen, wenn ich Dich richtig versteh :D

Wie soll das genau aussehen?

-Willst Du die Dateiendung alles Files ändern?
-Sollen Die Files alle durchnummeriert werden (aus test.bmp, hallo.jpg wird neu1.bmp, neu2.jpg ..)?
-Oder wie nu?

Ich mein, schließlich können ja nicht 10 Dateien einen identischen Dateinamen haben ;)

MfG
Stephan

fkerber 4. Mär 2004 13:00

Re: Mehrere Dateien gleichzeitig umbenennen. Wie?
 
Hi!

So wie ich das verstehe, will er nur Sonderzeichen und Leerzeichen entfernen.

Ciao fkerber

Steve 4. Mär 2004 13:18

Re: Mehrere Dateien gleichzeitig umbenennen. Wie?
 
Aso :wall: wer lesen kann is im Vorteil :-D

Also, mein Vorschlag sieht ca. so aus:

Delphi-Quellcode:
FUNCTION myRenameFiles : Boolean;
VAR
  i, posSpace : Integer;
  newName    : STRING;
  ok         : Boolean;
  dlg        : TOpenDialog;
CONST
  CrLf = #13#10;
BEGIN

  OK         := TRUE;
  newName    := '';
  Dlg        := TOpenDialog.Create(Application);
  Dlg.Options := openDlg.Options + [ofAllowMultiSelect];

  // Öffnen-Dialog aufrufen
  IF openDlg.Execute THEN

  // Alle ausgewählten Dateien durchlaufen
  FOR i:=0 TO openDlg.Files.Count-1 DO
  BEGIN
    posSpace := 1;
    newName := openDlg.Files[i];
    WHILE posSpace>0 DO
    BEGIN
      posSpace := Pos(' ',newName); // Leerzeichen suchen
      Delete(newName,posSpace,1);  // Leerzeichen löschen
    END;

    // Jetzt wird die Datei umbenannt
    IF NOT RenameFile(openDlg.Files[i],newName) THEN
    BEGIN
      // Fehler beim umbenennen
      OK := FALSE;
      MessageDlg(openDlg.Files[i]+' kann nicht umbenannt werden.' + CrLf +
                 Format('Möglicherweise existiert %s bereits!',[newName]),
                 mtError,[mbOK],0);
      Break;
    END; { Fehlerhandling }
  END; { Schleife Dateinamen }
 
  //Aufräumen
  Dlg.Free;
  result := OK;
END; { myRenameFiles }


Könnte sogar funktionieren :mrgreen:

So far,
Stephan


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz