C# Dateipfad per Console übergeben - Datei einlesen

palaber

Captain
Registriert
Juni 2006
Beiträge
3.856
Hallo zusammen,

ich bin gerade dabei ein Programm, welches Dateien verschlüsseln soll, zu erstellen.
Wir haben die Aufgabe im Studium bekommen - eins vorne Weg, ich bin nicht der Crack.
Das ganze soll wie folgt aufgebaut werden:

Per Batch Datei wird dem Programm ein Dateipfad übermittelt. Diese Datei soll kopiert werden und anschließend verschlüsselt bzw. entschlüsselt werden.

Ich hab es bisher soweit, das ich den Dateiname / Pfad an Variable übergebe.
Um die Datei zu kopieren habe ich folgendes Konstrukt getestet:

Code:
string datei = "5031829.jpg";
            string quellPfad = @"D:\test";
            string zielPfad = @"D:\test\kopie";

            string quellDatei = System.IO.Path.Combine(quellPfad, datei);
            string zielDatei = System.IO.Path.Combine(zielPfad, datei);

            // To copy a folder's contents to a new location:
            // Create a new target folder, if necessary.
            if (!System.IO.Directory.Exists(zielPfad))
            {
                System.IO.Directory.CreateDirectory(zielPfad);
            }

            // To copy a file to another location and 
            // overwrite the destination file if it already exists.
            System.IO.File.Copy(quellDatei, zielDatei, true);


            if (System.IO.Directory.Exists(quellPfad))
            {


                string[] files = System.IO.Directory.GetFiles(quellPfad);

                // Copy the files and overwrite destination files if they already exist.
                foreach (String s in files)
                {
                    // Use static Path methods to extract only the file name from the path.
                    datei = System.IO.Path.GetFileName(s);
                    zielDatei = System.IO.Path.Combine(zielPfad, datei);
                    System.IO.File.Copy(s, zielDatei, true);
                }
            }
            else
            {
                Console.WriteLine("Quellpfad existiert nicht!");
            }

            // Keep console window open in debug mode
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();

Nach meinem Denken, würde ich jetzt in die Variablen:
string datei = "5031829.jpg";
string quellPfad = @"D:\test";
string zielPfad = @"D:\test\kopie";

nicht den Wert im Quellcode schreiben, sondern eben aus der Console verwenden.
Dazu folgende Batch:
Code:
C:\Users\...\dataCrash.exe "c:\win\xl" "test.txt"
Heißt ich weise der datei das test.txt zu und dem quellPad den Pfad zu. Wo ich momentan hänge, ist das "@" - dieses bekomme ich zwar dazu. Aber dann als kompletter String und nicht als @"String".

Weiß jemand wie das geht, oder wie man das einfacher machen kann?
 
Ich will eigentlich von meinem Aufbau nicht großartig abweichen. Die Zuweisung von dem Dateipfad an die Variablen klappt ja auch.

Nur was ich nicht verstehe für was steht das "@" in der Zuweisung:
string quellPfad = @"D:\test";

Wenn ich quellPfad ausgebe, steht auch "nur" D:\test da.
Brauch ich dann das @ überhaupt um die Datei zu kopieren?

Edit:
Und mein Kopie der "Datei" kopiert das gesamt Verzeichnis - ist mir gerade aufgefallen?!
 
Zuletzt bearbeitet:
das @ vor dem string bewirkt, dass die Sonderzeichen automatisch escaped werden. Dann muss man bei definitionen nicht string s = "C:\\ordner\\order"; schreiben sondern s = @"C:\ordner\ordner";
Wenn man über parameter die pfade eingibt, sind die zeichen schon korrekt escaped.

MfG
Damon
 
Zurück
Oben