Programm aus Unterverzeichnis öffnen


  • Mod

    mcdgt schrieb:

    ich will nicht den pfad wissen, ich will die Dateien im unterverzeichnis ausführen also z.b

    Programm ist in Ordner A: und im Ordner A/B leigt eine Datei die ich ausführen möchte.

    Aber du weißt ja anscheinend nicht, in welchem Verzeichnis du dich befindest, sonst würde es ja funktionieren. Wir wollen dir mit diesen Ratschlägen beim Debuggen helfen. Lass dir mal den aktuellen Pfad anzeigen, dann weißt du auch warum es nicht funktioniert.

    Die korrekte Syntax sobald du dich im richtigen Pfad befindest wurde dir schon genannt.



  • Doch weiß ich. ICh habe ihn ja selbst bestimmt !!!!
    Ich bin AUf Pfad C:\\im Ordner DB und will ein Programm ausfhren dass auf C:\\DB\\files liegt, mit einer relativen Pfad Angabe



  • http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx

    ShellExecute is erstmal besser.
    Von system() halt ich nix.
    Trotzdem scheint es mit den Pfaden nicht so hinzuhauen, sonst würde es ja gehen...
    lg



  • also kann man bei C++ keine relativen pfade nutzen?


  • Mod

    mcdgtadmin schrieb:

    also kann man bei C++ keine relativen pfade nutzen?

    Es spricht nichts gegen relative Pfade. Man muss es nur richtig machen.



  • mcdgtadmin schrieb:

    also kann man bei C++ keine relativen pfade nutzen?

    C++ kennt keine Pfade. Es kennt nur Strings. Und damit kannst du machen was du willst. Wenn es kein gültier relativer Pfad ist, dann machst du schlichtweg etwas falsch.



  • das weiss ich auch aber ich habe schon so gut wie alles benutzt, was in diesen Antworten stand und nix hat gewirkt. Ich denke mal ich werde es jetzt mit einem batch code versuchen.

    Wenn euch noch was einfällt, wie man relative pfdade in strings speicher o.ä dann sagt pls bescheid.


  • Mod

    mcdgt schrieb:

    Doch weiß ich. ICh habe ihn ja selbst bestimmt !!!!
    Ich bin AUf Pfad C:\\im Ordner DB und will ein Programm ausfhren dass auf C:\\DB\\files liegt, mit einer relativen Pfad Angabe

    mcdgt schrieb:

    das weiss ich auch aber ich habe schon so gut wie alles benutzt, was in diesen Antworten stand und nix hat gewirkt.

    Ok, nochmal:

    Mal unter der Annahme, dass obige Annahme richtig ist. Dann ergibt

    system("cd");
    

    eine Ausgabe ähnlich wie C:\DB\ . Prüf dies nach!

    Angenommen, dein Programm heißt 'foo.exe' und liegt in "C:\DB\files\". Dann kannst du dieses Programm so starten:

    system("files/foo.exe");
    

    Falls dies nicht funktioniert, kannst du ja mal

    system("dir");
    system("dir files");
    system("dir files/foo.exe");
    

    machen und gucken ab welchem Befehl ein Fehler auftritt.



  • nur mal so eine Frage kann man per system() Befehl eigentlich JEDEN cmd bzw Batch code in c++ verwenden???


  • Mod

    mcdgt schrieb:

    nur mal so eine Frage kann man per system() Befehl eigentlich JEDEN cmd bzw Batch code in c++ verwenden???

    system ruft einfach nur den Befehlsprozessor der Umgebung in der das Programm gestartet wurde auf und übergibt ihm das Kommando. Wenn der Befehlsprozessor damit was anfangen kann, wird er es ausführen. Was da so alles möglich ist, hängt vom Befehlsprozessor ab. Hier ist zum Beispiel was hübsches zum ausführen in der cmd: system("@echo off :start start /MAX CMD GOTO :start"); . ( ⚠ Lieber nicht ausprobieren!)



  • also heisst das ich könnte teoretisch gesehen folgendes amchen

    system("echo lol") und er würde "lol" ausgeben?

    funzt das auch mit copy und remove befehlen?


  • Mod

    mcdgt schrieb:

    also heisst das ich könnte teoretisch gesehen folgendes amchen

    system("echo lol") und er würde "lol" ausgeben?

    funzt das auch mit copy und remoiv befehlen?

    Ja! Probiers doch einfach aus.

    Und denk dran, dass dies hochgradig unportabel ist. Und wenn's sowieso schon unportabel ist, kann man auch gleich Betriebssystemfunktionen nutzen. Oder besser noch eine Bibliothek die diese Funktionen kapselt und für verschiedene Systeme zur Verfügung stellt.



  • Gibt es dafür eine? Ich bin nämlich keine Experte sondern ein noob in dem gebiet^^


  • Mod

    mcdgt schrieb:

    Gibt es dafür eine? Ich bin nämlich keine Experte sondern ein noob in dem gebiet^^

    Wofür? Kopieren und Löschen von Dateien? boost::filesystem.



  • Für relative pfade per system Funktion dass was SeppJ vorher poster gepostet hat



  • Ich hab ales versucht aber des will und will net funzen kann mir pls wer helfen ich hab die selben vorraussetzungen



  • dann poste doch mal, dein komplettes programm (wird ja nicht länger als 30zeilen sein) und die ausgabe dazu...

    lies dir davor vll noch mal den Beitrag von SeppJ durch - denn die Ausgaben sind das interessante...

    bb



  • #include <iostream>
    #include <string>

    using namespace std

    int main()
    {

    cout <<"Verzeichnis wechseln: "<<endl;
    system("cd debug");
    system("dir");
    system("pause");

    return 0;
    }


  • Mod

    Jedes system macht eine neue Shell auf. Das heißt sowas wie "cd debug" bringt genau nichts, da eine Shell geöffnet wird, das Verzeichnis gewechselt, Shell geschlossen. Und beim nächsten system ist alles vergessen. Wenn du mehrere Befehle nacheinander in einer Shell ausführen willst, dann musst du die Mittel dieser Shell zur Befehlsverkettung nutzen oder ein Shellscript aufrufen.



  • aso kannst du mir nen quellcode dafür geben?


Anmelden zum Antworten