Visual Studio – die meistgelesenen Beiträge

C#, Ein Teil des Pfades konnte nicht gefunden werden?

Guten Tag,

Mein Programm soll eine Datei auf den Desktop kopieren, umbenennen und dann starten, dazu habe ich folgenden Code:

//Datei + Ziel festlegen
            string Name = "NoRecoil-R6S.exe";
            string Path = Environment.SpecialFolder.Desktop.ToString();
            string Stream = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "Resources");

            //Auf Desktop kopieren             string Datei = System.IO.Path.Combine(Stream, Name);             string destFile = System.IO.Path.Combine(Path, Name);             if (System.IO.File.Exists(Datei))             {                 try                 {                     System.IO.File.Copy(Datei, destFile, true);

                    if (System.IO.File.Exists(Datei))
                    {
                        //Umbenennen
                        if (System.IO.File.Exists(destFile + ".exe"))
                        {
                            System.IO.File.Move(destFile, destFile + code + ".exe");
                            //Starten
                            if (System.IO.File.Exists(Path + code + ".exe"))
                            {
                                Process.Start(Path + code + ".exe");
                                this.Hide();
                            }
                            else
                            {
                                MessageBox.Show("File does not exist on Desktop.");
                            }
                        }
                        else
                        {
                            MessageBox.Show("File does not exist on Desktop.");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Failed to copy script!");
                    }
                }
                catch (Exception ex)
                {
                    string Error = Convert.ToString(ex);
                    MessageBox.Show(Error);
                }
            }
            else
            {
                MessageBox.Show("Script not found in resources.");
            }

Jedoch scheitert es beim Kopieren auf den Desktop. Als Fehlermeldung erhalte ich immer, dass ein Teil des Pfades nicht gefunden werden konnte. Als nicht gefundener Pfad steht dann:

Desktop\NoRecoil_R6S.exe

Aber die Datei muss er dort ja nicht finden. Die muss dahin kopiert werden?

Computer, programmieren, Visual Studio

Gesamtes Verzeichnis im C# kopieren

Hallo, Ich programmiere schon einige zeit in "Microsoft Visual C# 2010 Express". Doch jetzt bin ich auf folgendes Problem gestoßen: Ich möchte einen ganzen Ordner (mit Unterordner, Dateien, ... Einfach alles im Ordner!) kopieren, doch mein Code (unten) erstellt immer ein weiteres Unterverzeichnis...

Also zum Beispiel: "C:/User/Myname/AppData/MyFolder/sourceFolder"

soll nach: "C:/User/Myname/AppData/MyFolder/targetFolder"

KOPIERT werden (Dadurch nützt mir die Anweisung System.IO.Directory.Move nichts)

Doch er kopiert das ganze nach: "C:/User/Myname/AppData/MyFolder/targetFolder/sourceFolder"

Was muss ich bei dem Code ändern??

Hier ist der Code:

   private void CopyDirectoryWithIncludedFiles(string dirCopySource, string dirCopyTarget)
    {
        // alle Unterverzeichnisse des aktuellen Verzeichnisses ermitteln
        string[] subDirectories = Directory.GetDirectories(dirCopySource);

        // Zielpfad erzeugen
        StringBuilder newTargetPath = new StringBuilder();
        {
            newTargetPath.Append(dirCopyTarget);
            // Diese Zeile Erstellt einen Ordner im Zielordner: (Kann leider nicht entfernt werden!)
            newTargetPath.Append(dirCopySource.Substring(dirCopySource.LastIndexOf(@"\")));

        }

        // wenn aktueller Ordner nicht existiert -> ersstellen
        if (!Directory.Exists(newTargetPath.ToString()))
            Directory.CreateDirectory(newTargetPath.ToString());


        // Unterverzeichnise durchlaufen und Funktion mit dazu gehörigen Zielpfad erneut aufrufen (Rekursion)
        foreach (string subDirectory in subDirectories)
        {
            string newDirectoryPath = subDirectory;

            // wenn ''/'' an letzter Stelle dann entfernen
            if (newDirectoryPath.LastIndexOf(@"\") == (newDirectoryPath.Length - 1))
                newDirectoryPath = newDirectoryPath.Substring(0, newDirectoryPath.Length - 1);

            // rekursiever Aufruf
            CopyDirectoryWithIncludedFiles(newDirectoryPath, newTargetPath.ToString());
        }


        // alle enthaltenden Dateien des aktuellen Verzeichnisses ermitteln
        string[] fileNames = Directory.GetFiles(dirCopySource);
        foreach (string fileSource in fileNames)
        {
            // Zielpfad + Dateiname
            StringBuilder fileTarget = new StringBuilder();
            {
                fileTarget.Append(newTargetPath);
                fileTarget.Append(fileSource.Substring(fileSource.LastIndexOf(@"\")));
            }

            // Datei kopieren, wenn schon vorhanden überschreiben
            File.Copy(fileSource, fileTarget.ToString(), true);
        }
    }

Bitte helft mir! Brauche das ganz dringend!

PC, Computer, Programm, C Sharp, Visual Studio