Programm aus Unterverzeichnis öffnen



  • Ich hätte mal eine Frage und zwar wollte ich eine Datei aus einem Unterverzeichnis öffnen. Ich hab schon folgendes Versucht:

    system("..//ornder//Datei");
    system(".//Ordner//Datei");
    system(".\\Ordner\\Datei");
    system("..\\Ordner\\Datei");

    Alle Ohne erfolg.

    PLEASE HELP!!!



  • Welches Dateiformat? Oder ist das ganze eine Executable? Wenn du eine Datei im jeweiligen Editor öffnen willst geht das AFAIK nicht so einfach per System. Da sowas direkt übers BS gehen muss. Notfalls schau mal den Rückgabewert von System an. Zusätzlich solltest du bekanntgeben welches BS du nutzt.



  • Das ist zum Test eine -bat datei und sollte später eine -exe werden.ich nutze WINXP mit Visual Studio 2005



  • .. geht ein Verzeichnis "herauf", das kann also nicht gehen.
    // gibbets nich, \\ schreibst du nur weil \ das Escapezeichen ist.
    Richtig ist so, entspricht aber unter Windows auch der dritten Zeile:

    system("Ordner/Datei");
    

    Musst halt drauf achten, dass du auch im gewünschten Verzeichnis bist, wenn du das Programm startest.



  • Athar schrieb:

    .. geht ein Verzeichnis "herauf", das kann also nicht gehen.
    // gibbets nich, \\ schreibst du nur weil \ das Escapezeichen ist.
    Richtig ist so, entspricht aber unter Windows auch der dritten Zeile:

    system("Ordner/Datei");
    

    Musst halt drauf achten, dass du auch im gewünschten Verzeichnis bist, wenn du das Programm startest.

    Das hab ich bereits versucht leider erfolglos:

    "Die Datei oder der Befhel konnte nicht gefunden werden."



  • Bist du sicher, daß der Pfad zur Batch-Datei richtig ist? Lass dir doch mal den absoluten Pfad mit ausgeben, um das zu debuggen.

    Gruß Kimmi



  • Die Pfade sind immer relativ vom Working Directory, nicht von dem Verzeichnis in dem die Exe-Datei sich befindet.

    Start man zum Beispiel über die IDE Visual C++ Express die Datei, so ist das Working Directory nicht identisch mit dem Verzeichnis in dem sich die Exe-Datei befindet.


  • Mod

    Es gibt in der cmd doch bestimmt auch eine Möglichkeit, sich den aktuellen Pfad anzeigen zu lassen, analog zu pwd in Unix-Shells. Lass dir doch mal ausgeben wo du bist.

    P.S.: angeblich geht das unter Win mit cd ohne Argumente.



  • SeppJ schrieb:

    P.S.: angeblich geht das unter Win mit cd ohne Argumente.

    Nicht nur angeblich. 😉

    Sie können einen Beitrag nicht so schnell nach Ihrem letzten absenden, bitte warten Sie einen Augenblick.

    Nerviger UNNÖTIGER scheiß!



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


  • 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!)


Log in to reply