Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batch-Datei mit PHP ausführen(Windows)

Empfohlene Antworten

Veröffentlicht

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:

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?

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.

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

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.

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

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!

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

ES FUNKTIONIERT!!!:D:D:D

1000 DANK!!!! EUCH BEIDEN!!!

Schön das man(n) helfen konnte.

Ich liebe Caps :D

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.