Laden...

Dateien umbenennen gemäß Inhalt List<string>

Erstellt von mysharp55 vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.059 Views
M
mysharp55 Themenstarter:in
17 Beiträge seit 2015
vor 9 Jahren
Dateien umbenennen gemäß Inhalt List<string>

Hi!

Ich habe eine List<string> mit folgendem Inhalt:

Ich bin Zeile 1
...und ich Zeile 2
Naja und hier geht's weiter
na denn....

Ich möchte nun alle Dateien in einem Ordner einlesen und die Datei-Namen gemäß dem Inhalt meiner List ändern.

Also aus "Dateiname 1" wird "Ich bin Zeile 1" usw...

Den Ordner-Inhalt lasse ich mir mit dieser Methode aufrufen:

public List<string> GetOrdnerInhalt(string ordnerName)
        {
            //Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
            List<string> fehler = new List<string>();

            try
            {
                //Liste erzeugen
                List<string> fileList = new List<string>();

                //DirectoryInfo-Objekt erzeugen
                DirectoryInfo di = new DirectoryInfo(ordnerName);

                //Dateien ermitteln und in Array speichern
                FileInfo[] files = di.GetFiles();

                //Alle Dateien durchgehen und den Namen in Liste speichern
                foreach (FileInfo file in files)
                {
                    //Console.WriteLine(file.Name);
                    fileList.Add(file.Name);
                }
                return fileList;
            }            
            catch (UnauthorizedAccessException UAEx)
            {
                Console.WriteLine(UAEx.Message);
                return fehler; //Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
            }
            catch (PathTooLongException PathEx)
            {
                Console.WriteLine(PathEx.Message);
                return fehler; //Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
            }
            catch (IOException ex)
            {
                Console.WriteLine("Fehler beim Ermitteln der Dateien" + ex);
                return fehler; //Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
            }
        }

Muss ich dann beide Listen "abgleichen"!? Hmmm stehe "dezenzt" auf dem Schlauch.

Ich danke euch schon jetzt für eure Mühe und wünsche ein schönes Wochenende 😃

16.840 Beiträge seit 2008
vor 9 Jahren

Was ist jetzt die Frage?
Auch im Grundlagenforum gilt [Hinweis] Wie poste ich richtig? Punkt 5

M
mysharp55 Themenstarter:in
17 Beiträge seit 2015
vor 9 Jahren

Sorry für die falsche Fragestellung - Muss ich dann beide Listen "abgleichen"!? Um die Dateien umzubenennen?

Die Methode "File.Move" möchte ja zwei strings... ich habe aber zwei List<string> .

Folgendes funktioniert also leider nicht

foreach (string elem in listeDateien)
{
File.Move(elem,???);
}
189 Beiträge seit 2014
vor 9 Jahren

Mal der Verweis auf die MSDN. Also F1.
Deine mühsam zusammengefrickelte Liste von Dateinamen bekommst du auch mit Directory.GetFiles(). So nun weißt du deine Ausgangsnamen.
Je nachdem, welche Regeln du aufgestellt hast (z.B. Datei[x].Name = ListeNeueNamen[x]) kannst du mit der File.Move() Methode alle Dateien umbennen. Wo ist das Problem?

EDIT: Lies dir auch nochmal [Hinweis] Wie poste ich richtig? durch.

EDIT2: Wie's aussieht solltest du dich dringend mit den Grundlagen strukturiert auseinandersetzen. Deshalb gugge hier http://openbook.galileocomputing.de/visual_csharp_2012/ und hier [FAQ] Wie finde ich den Einstieg in C#?

1.696 Beiträge seit 2006
vor 9 Jahren

Wenn du die Liste einfach abarbeiten möchtest, ohne zu prüfen, ob der zuvergebene Dateiname zu der Datei passt, dann lasse einen Couter mitlaufen und somit auf Listenelemente zugreifen, e.g.


int i = 0;
int max = deineStringListe.Count;
foreach (string elem in listeDateien)
{
   if (i<max)
   {
      File.Move(elem,Path.Combine("Zielpfad",deineStringListe[i]));
   }
   i++;
}

BTW.: Solche primitive Sache sollte man von selbst drauf kommen, ist dies nicht der Fall, dann ist man IMHO nicht zum Programmierer geeignet. Es gibt hier zwar Anfängerbereich, aber man soll's nicht übertreiben. Streng dich also an. 😉

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

M
mysharp55 Themenstarter:in
17 Beiträge seit 2015
vor 9 Jahren

@vbprogger: Danke für den Deankanstoss > hat mein Problem gelöst.

Danke für eure Hilfe