AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dateiname: Ersetzen/Löschen von Teilstrings
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiname: Ersetzen/Löschen von Teilstrings

Ein Thema von Delphi_gn7 · begonnen am 31. Mai 2009 · letzter Beitrag vom 9. Jun 2009
Antwort Antwort
Seite 2 von 2     12   
Steku

Registriert seit: 12. Mai 2008
184 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#11

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 19:30
Und noch ein Freeware Tool...

Bulk Rename Utility

Gruß,
Steku
  Mit Zitat antworten Zitat
Delphi_gn7

Registriert seit: 21. Mai 2009
59 Beiträge
 
Delphi 7 Personal
 
#12

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 20:06
Zitat von himitsu:
Für alle Vorkommen müßtest du es in einer Schleife solange wiederholen[...].
Ok hab ich eingebaut.

Zitat von himitsu:
Aber zum Ersetzen würde ich dir Delphi-Referenz durchsuchenStringReplace empfehlen.
Warum denn?


Zitat von himitsu:
Dann macht es sich besser erstmal alle (nötigen) Dateien in eine Liste aufzunehmen und anzuzeigen, so daß man da nochmal schnell drüberschauen und eventuell noch was ändern kann, bevor umbenannt wird.
Dazu komme ich wenn überhaupt erst, wenn es überhaupt mal funktioniert


Zitat von himitsu:
PS: du läßt doch dein Programm erstmal nur über ein Testverzeichnis laufen, bzw. hast dir von den Dateien ein Backup gemacht?
ja, bisher hab ich es nur mit leeren Textdateien versucht
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#13

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 20:26
Zitat von Delphi_gn7:
Warum denn?
ist ja kein Muß, aber ein Befehl einmal ausgeführt und alles ist ersetzt
DateiName := StringReplace(DateiName, Ren, RenIn, [rfReplaceAll]); in der CodeLib ist sogar (glaub ich) irgendwo eine Version, welcher man mehrere Zeichen/Strings übergibt und wo die alle auf einmal ersetzt werden.

Zitat von Delphi_gn7:
ja, bisher hab ich es nur mit leeren Textdateien versucht
die Art der Dateien und deren Inhalt ist ja egal ... es wär nur etwas blöd, wenn man sowas auf "wichtige" Dateien losläßt und danach dann alle/viele Dateiname "unbrauchbar"/unverständlich wären
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Delphi_gn7

Registriert seit: 21. Mai 2009
59 Beiträge
 
Delphi 7 Personal
 
#14

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 20:31
Ach jetzt hab ich das verstanden mit dem Stringreplace
Aber was bedeutet das [rfReplaceAll] ?

Und weißt du nicht vielleicht auch warum das Programm immer noch nicht funktioniert (ich kann es mit den Änderungen nochmal posten falls nötig)?
Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 20:47
Zitat:
Aber was bedeutet das [rfReplaceAll] ?
Es werden dann alle Vorkommen des Suxhstrings ersetzt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#16

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 20:52
siehe Delphi-Referenz durchsuchenStringReplace
Die Delphi-OH
Beschreibung
TReplaceFlags besteht aus einer Menge von Flags, die steuern, wie ein Teilstring innerhalb eines Strings gesucht und ersetzt wird. Diese Menge kann folgende Werte enthalten:

rfReplaceAll Alle Fundstellen werden ersetzt. Wenn dieses Flag nicht vorhanden ist, wird nur die erste Fundstelle des gesuchten Teilstrings ersetzt.
rfIgnoreCase Bei der Suche nach dem Teilstring wird die Groß-/Kleinschreibung nicht berücksichtigt. Wenn dieses Flag nicht vorhanden ist, werden nur Fundstellen berücksichtigt, deren Schreibweise genau mit dem Suchstring übereinstimmt.


PS:
write('Ordner (mit Backslash): '); das "mit Backslash" kannst weglassen
dir := IncludeTrailingBackslash(dir); hängt das \ notfalls an ... siehe Delphi-Referenz durchsuchenIncludeTrailingBackslash

für lastSlash gibt es Delphi-Referenz durchsuchenExtractFileName

FindFirst sucht übrigens so auch Verzeichnisse, welche dann ebenfalls umbenannt würden.

ja und namestring wird nie verwendet

der Fehler liegt hier
RenameFile(datei,lastSlash(datei)+DateiName); lastSlash(datei) liefert kein Verzeichnis und datei ist nicht die gefundene Datei.
und bei der suche würde ich zumindestens eine Suchmaske mit angeben ... damit auch was gefunden wird
Delphi-Quellcode:
datei := IncludeTrailingBackslash(datei);
If FindFirst (datei + '*.*', faAnyFile, FindRec) <> 0
Then Repeat
     If (FindRec.Name <> '.') and (FindRec.Name <> '..')
     Then begin
          DateiName := FindRec.Name;
          if (pos(Ren,DateiName) > 0)
          Then begin
               DateiName := StringReplace(DateiName, Ren, RenIn, [rfReplaceAll]);
               RenameFile(datei + FindRec.Name, datei + DateiName);
          end

// PS: den Variablennamen "datei" besser in "verzeichnis" umbenennen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.174 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 31. Mai 2009, 21:15
Hallo Delphi_gn7,

Mp3's umbenennen habe ich hinter mir.
Wie NamenLozer im Thread #4 schon geschrieben hat ist Total Commander hier eine gute Wahl.

Zu deiner Frage wie man z.B. Leerzeichen mit dem Total Commander entfernt:
Du markierts alle gewünschten Dateien, drückst dann Strg + M und trägst oben rechts ein Leerzeichen ein (im Feld Suchen&ersetzen).
In der Vorschau siehst du sofort das Ergebnis.
Um das Ganze auch anzuwenden, drückst du unten rechts auf "Start".
Abschließend auf den "gebogenen" Pfeil neben "Start" um weiter zu machen. Das war's.

Wenn dein Hauptziel ein schnelles Umbenennen deiner MP3's ist, wäre es besser dir mal den Total Commander etwas näher anzuschauen. Er bietet wirklich einige Möglichkeiten, ist schnell, einfach zu bedienen und funktioniert.
Solltes du aber deine Anforderung als Anlass nehmen um in Delphi etwas zu lernen, wäre dieser Weg auch in Ordnung, kostet aber natürlich "etwas" mehr Zeit.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Delphi_gn7

Registriert seit: 21. Mai 2009
59 Beiträge
 
Delphi 7 Personal
 
#18

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 3. Jun 2009, 17:56
Vielen Dank für die hilfreichen Tipps, ich werde sie veruschen anzuwenden!

Mfgn7
Andreas
  Mit Zitat antworten Zitat
Delphi_gn7

Registriert seit: 21. Mai 2009
59 Beiträge
 
Delphi 7 Personal
 
#19

Re: Dateiname: Ersetzen/Löschen von Teilstrings

  Alt 9. Jun 2009, 18:34
Ich habe (hoffe ich) alle Änderungen eingebracht, aber es tut sich noch immer nichts:

Delphi-Quellcode:
program FileRenamer;

{$APPTYPE CONSOLE}

uses
  SysUtils;

procedure RenameFiles (var datei: string; Ren, RenIn: string);
Var
  FindRec: tSearchRec;
  DateiName: string;
Begin
datei:=IncludeTrailingBackslash(datei);
 If FindFirst (datei + '*.*', faAnyFile, FindRec) <> 0
Then Repeat
     If (FindRec.Name <> '.') and (FindRec.Name <> '..')
     Then begin
          DateiName := FindRec.Name;
          if (pos(Ren,DateiName) > 0)
          Then begin
               DateiName := StringReplace(DateiName, Ren, RenIn, [rfReplaceAll]);
               RenameFile(datei + FindRec.Name, datei + DateiName);
                 end;
            end;

        Until FindNext (FindRec) <> 0;
FindClose (FindRec);
end; // Ende Prozedur

var
  dir, Ren, RenIn: string;

begin
  write('Ordner: ');
  readln(dir);
dir:=IncludeTrailingBackslash(dir);
dir:=ExtractFileName(dir);
  write('Umzubenennender Teilstring: ');
  readln(Ren);
  write('Zu ersetzen durch: ');
readln(RenIn);
RenameFiles (dir,Ren,RenIn);
end.
Mfgn7...
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 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