Dateiendungen suchen & ersetzen

XenonNi

Cadet 3rd Year
Registriert
Apr. 2005
Beiträge
35
Hi all,

Ich habe 954 Dateien die ungefähr so aussehen:

0012982.psd

diese sollen alle die Dateiendung *.eps bekommen. Ist dies durch ein Programm möglich?

Vielen Dank im Voraus
 
start ausführen: cmd
via cd in den Ordner navigieren
ren *.psd *.eps
 
cd geht nicht (bei mir zumindest) auf andere Medien als die Systemplatte. <-- stimmt nicht, siehe HereticNovalis
Man müsste also mit Pfaden arbeiten (nicht probiert, müsste aber gehen) oder dieses schnell hingeschriebene Programm benutzen (ließe sich sicher stellenweise noch verschönern.. ;)):
[C#]
Code:
using System;
using System.IO;

namespace extReplacer
{
    class Program
    {
        static void Main()
        {
            Console.Write("Ordner: ");
            string folder = Console.ReadLine();
            if (!Directory.Exists(folder))
            {
                Console.WriteLine("Fehler: Der Ordner {0} existiert nicht.", folder);
                return;
            }

            Console.Write("Original-Endung: ");
            string ext = Console.ReadLine();
            if (ext == "")
            {
                Console.WriteLine("Fehler: Keine Eingabe!");
                return;
            }

            Console.Write("Ersetzte Endung: ");
            string replace = Console.ReadLine();
            if (replace == "")
            {
                Console.WriteLine("Fehler: Keine Eingabe!");
                return;
            }

            Console.Write("Arbeite...");
            Rename(folder, ext, replace);
            Console.WriteLine("Fertig!");
        }

        static void Rename(string folder, string ext, string replace)
        {
            foreach (string dir in Directory.GetDirectories(folder))
            {
                foreach (string file in Directory.GetFiles(dir))
                {
                    int lastDot = file.LastIndexOf('.');
                    string[] file_ar = new string[2];
                    file_ar[0] = file.Substring(0, lastDot);
                    file_ar[1] = file.Substring(lastDot);
                    string oldname = file;
                    string newname = file_ar[0] + file_ar[1].ToLower().Replace(ext, replace);
                    
                    File.Move(oldname, newname);
                }

                foreach (string dir2 in Directory.GetDirectories(folder))
                    Rename(dir2, ext, replace);
            }
        }
    }
}
 

Anhänge

Zuletzt bearbeitet: (cd)
Hallo,

meine Empfehlung --> TotalCommander

Wechsle in den entsprechenden Ordner, alle Dateien markieren und STRG + M.
Unter Erweiterung [E] --> Deine gewünschte einfügen.

Start betätigen und gut ;-).

Grüße

Ups--> vergesst die Antwort :-* ist ja unter programmieren...
Welche Sprache?
 
Zuletzt bearbeitet: (Thema verfehlt ;-))
Backslash schrieb:
cd geht nicht (bei mir zumindest) auf andere Medien als die Systemplatte.
schonmal statt "cd d:" "d:" versucht?
man kann natürlich auch ein 200 zeiliges programm schreiben wenn man mit dos nicht umgehen kann :D
 
Zudem benennt das C#-Programm ja auf Teufel komm raus alle Dateien im Ordner in .eps um, nicht nur die .psd-Dateien

kann man bei GetFiles nicht nur ein SearchPattern angeben?

außerdem hätte man es dann schon um Rekursion erweitern können, denn das ist der einzige Nachteil an der Kommandozeile...
 
Also ich finde, C# ist ein bisschen hochgegriffen für so eine einmalige niedrige
Operation... :D
 
Jop, aber mir war langweilig :p und wir sind in einem Programmierforum. Außerdem wird doch nur das angegebene ersetzt?
Na egal, muss weg :p

Achja danke für den Tip mit dem cd, habe mich noch nie eingehender mit der Windows Kommandozeile beschäftigt.
 
Zuletzt bearbeitet:
Hmm ok da haste recht, Backslash...
Aber wäre auch eleganter gegangen mit dem Aufruf
Code:
foreach (string file in Directory.GetFiles(dir, "*." + ext))
 
Zurück
Oben