newcomer_21 Geschrieben 9. April 2009 Teilen Geschrieben 9. April 2009 Hallo zusammen! Ich bin kein Profi in PHP,:new deswegen brauche ich eure Hilfe. Ich will eine .bat-Datei mit PHP starten. Sie liegt z.B. unter C:\Programme\My\new.bat. Diese Datei öffnet ein Programm und speichert die Rückgabe dieses Programms in einer erzeugten txt-Datei. Wenn ich die Batch-Datei ganz normal im Ordner öffne, funktioniert das einwandfrei. Jetzt will ich sie mit Hilfe von meinem PHP-Script ausführen. Ich habe es schon mit exec(), system(), passthru() probiert, aber irgendwie klappt es nicht, weil ich sie wahrschienlich falsch aufrufe. Kann mir bitte jemand sagen,wie genau soll der Befehlaufruf ausschauen? Ich wäre über eure Hilfe sehr dankbar, weil ich nicht so viel Ahnung von dem Ganzen habe :hells: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
newcomer_21 Geschrieben 9. April 2009 Autor Teilen Geschrieben 9. April 2009 Ich habe es jetzt mit system("C:/Programme/My/new.bat"); ausprobiert. Als Ausgabe bekomme ich: C:\xampp\eclipse\workspace\'Der Ordner wo mein php-script liegt'>'befehle, die in der .bat-Datei stehen' Wahrscheinlich werden die Befehle vom meinem Projekt-Ordner aus ausgeführt,aber sie sollten doch von dem Ordner 'C:/Programme/My' ausgeführt werden. Ich bekomme sogar die txt-Datei (in meinem Projekt-Ordner), die erzeugt werden sollte, aber leer. Also, die Batch-Datei wird schon ausgeführt, aber sie tut nicht das, was sie tun sollte. Was mache ich falsch? Und wie wär's richtig? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
GuntiNDDS Geschrieben 9. April 2009 Teilen Geschrieben 9. April 2009 Ich glaube nicht das das so funktioniert, wie du dir das vorstellst. PHP Scripte werden auf dem Webserver ausgeführt, bevor die Rückgabe der HTML Seite erfolgt. Es ist also eine "Server-Seitige" Sprache. Desshalb ist es nicht möglich mit PHP eine Datei auf einem Client-Rechner auszuführen. Zur Veranschaulichung: Client PC stellt Anfrage über das HTTP Protokoll an den Webserver für meinscript.phpmeinscript.php PHP Script wird auf dem Webserver interpretiert.Das Ergebnis der Interpretation (reiner HTML Code) wird an den Client PC über das HTTP Protokoll zurück gegeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
newcomer_21 Geschrieben 9. April 2009 Autor Teilen Geschrieben 9. April 2009 Danke für deine Antwort, GuntiNDDS! Hm... das ist aber gar nichr gut.... Gibt es denn eine andere Möglichkeit, diese Batch-Datei lokal auszuführen (Javascript, HTML-Link oder so)? :confused: Irgendwie muss es doch funktionieren.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
GuntiNDDS Geschrieben 9. April 2009 Teilen Geschrieben 9. April 2009 Danke für deine Antwort, GuntiNDDS! Hm... das ist aber gar nichr gut.... Gibt es denn eine andere Möglichkeit, diese Batch-Datei lokal auszuführen (Javascript, HTML-Link oder so)? :confused: Irgendwie muss es doch funktionieren.... Hallo, ja sicher geht das. Z.b. per Link <a href="file:///c:/blabla/meinebat.bat">Link</a> Dann würde die bat Datei nach Klick des Benutzers auf den Link lokal ausgeführt. Natürlich nur wenn es sich um ein Windows-System handelt. Dein PHP Script ist zu der Zeit jedoch bereits ausgeführt worden (falls der Link bestandteil davon ist). Daher müsstest du eine HTML Seite mit dem Link dem PHP Script voranstellen. Du kannst die Ausführung sicher auch mit JavaScript automatisieren, da kenne ich mich aber nicht aus. Und im Browser müsste dann natürlich die Ausführung von JS erlaubt sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
newcomer_21 Geschrieben 9. April 2009 Autor Teilen Geschrieben 9. April 2009 (bearbeitet) Hallo, ja sicher geht das. Z.b. per Link <a href="file:///c:/blabla/meinebat.bat">Link</a> Dann würde die bat Datei nach Klick des Benutzers auf den Link lokal ausgeführt. Natürlich nur wenn es sich um ein Windows-System handelt.Dein PHP Script ist zu der Zeit jedoch bereits ausgeführt worden (falls der Link bestandteil davon ist). Ich arbeite mit Windows Xp und mein PHP-Script muss ausgeführt werden, bevor ich die Batch-Datei aufrufe. Also, momentan sieht's so aus: <html> <head> <title>PHP</title> </head> <body> <?php //Mein PHP-Script ?> <a href="file:///c:/Programme/My/new.bat">Batch-Datei</a> </body> </html> Wenn ich den Verweis aufrufe, passiert gar nichts (also Batch-File wird nicht ausgeführt). Woran könnte das liegen? Bearbeitet 9. April 2009 von newcomer_21 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DominikJ Geschrieben 9. April 2009 Teilen Geschrieben 9. April 2009 Hey, dein Problem ist es, das deine Batch Datei aus dem Projekt-Pfad (da wo die aufrufende PHP-Datei liegt) aufgerufen wird. Dies liegt daran, dass die Umgebungsvariable darauf gesetzt ist. Umgehen können solltest du dies, indem du mit deiner Batch Datei in das Verzeichnis "c:\Programme\my" wechselst und erst danach die eigentliche Ausführung beginnt. Also (so in etwa müsste das aussehen, mache nicht viel mit Batch) C: cd Programme\my\ ... Andere Lösungen gibt es schon, aber die bisher vorgeschlagenen werden von den aktuellen Browsern nicht mehr untestützt (Sicherheits-Aspekt). Aber wenn du es so machen willst, beim IE bis einschließlich Version 6 ist das möglich. Gruß Dominik P.S.: Mein Einstands-Post Edit: ... <a href="file:///c:/Programme/My/new.bat">Batch-Datei</a> ... Wenn ich den Verweis aufrufe, passiert gar nichts (also Batch-File wird nicht ausgeführt). Woran könnte das liegen? Du kannst den aus genannten (deaktivierbaren) Gründen nicht aufrufen. Eine Deaktivierung dessen würde ich dir aber abraten! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
newcomer_21 Geschrieben 9. April 2009 Autor Teilen Geschrieben 9. April 2009 dein Problem ist es, das deine Batch Datei aus dem Projekt-Pfad (da wo die aufrufende PHP-Datei liegt) aufgerufen wird. Dies liegt daran, dass die Umgebungsvariable darauf gesetzt ist. Umgehen können solltest du dies, indem du mit deiner Batch Datei in das Verzeichnis "c:\Programme\my" wechselst und erst danach die eigentliche Ausführung beginnt. Also (so in etwa müsste das aussehen, mache nicht viel mit Batch) C: cd Programme\my\ ... :uli Ich habe in meine Batch-Datei folgende Zeilen hinzugefügt: C: cd\ cd C:\Programme\My und mit exec('C:/Programme/My/new.bat'); aufgerufen und .... ES FUNKTIONIERT!!!:D:D 1000 DANK!!!! EUCH BEIDEN!!! :valen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DominikJ Geschrieben 9. April 2009 Teilen Geschrieben 9. April 2009 ES FUNKTIONIERT!!!:D:D 1000 DANK!!!! EUCH BEIDEN!!! Schön das man(n) helfen konnte. Ich liebe Caps Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.