Programm aus Unterverzeichnis öffnen



  • 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?


  • Mod

    mcdgt schrieb:

    aso kannst du mir nen quellcode dafür geben?

    Für welche Shell? Für bash und die meisten anderen Unix-Shells wäre es:
    system("cd debug; dir; pause");
    Mag sein, dass das auch für die Windows-Shell so geht, habe gerade keine da und ich bin kein Doku-Lese-Automat der das herausfinden kann.



  • Gilt das auch für windows?



  • sorry war als guest eingeloggt. würde

    system(" cd debug;lol.bat ");

    funzen???



  • Mal so eine Frage wenn ich das jetzt wie folgt mache funzt das denn?

    system("cd lol; lol.exe");?

    hat bei dir net gefunzt why?



  • weil die windows-shell das nicht kann.

    was sie aber kann:
    &&

    ->
    system("cd debug && lol.bat");

    bb


Anmelden zum Antworten