Zum Inhalt springen

Batch-Datei mit PHP ausführen(Windows)


Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von newcomer_21
Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:D

1000 DANK!!!! EUCH BEIDEN!!! :valen

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...