Wie kann ich mit PHP eine Batch Datei ausführen?

Wieso eine Batch-Datei ausführen?
Php brint doch selbst Verzeichnis-Optionen mit.

Ein Verzeichnis zu erstellen geht mit der Funktion "mkdir".

z.B.
mkdir('pfad und/oder Ordnername');

Optional kann man noch die Zugriffsrechte (chmod) mitgeben.

z.B.
mkdir('pfad und/oder Ordnername',0777);
 
Wieso mit PHP eine Batch Datei ausführen, die Ordner erstellt und nicht direkt PHP dafür verwenden? Macht weniger Probleme.

Weitere Infos dazu hier auf php.net. Dort steht auch in den Kommentaren, wie man eventuellen Problemen mit dem "safe mode" aus dem Weg gehen kann.

edit: Mist, ich hätte nachladen sollen bevor ich schreibe, Astro war schneller... :D
 
Ich möchte nur eine Batch Datei ausführen die ,dann eine jar datei(Komandandor Zeilen Datei) ausführt die dann ein verzeichnis anlegt.
:ROFLMAO::ROFLMAO::ROFLMAO:

Bisher auspropiert:

html code:
Code:
<script src="code.vbs" type="text/vbscript">
</script>
mit vbs code
Code:
set shell = CreateObject("Wscript.Shell")
shell.run "shotdown.bat", 1

andere möglichkeit auch schon durch gegange
über PHP exec
 
Zuletzt bearbeitet:
Nun bin ich verwirrt, da steht VBS Code aber die Eingangsfrage bezog sich auf PHP ... :unsure:

Ich antworte trotz des VBS einfach mal auf die Eingangsfrage zu PHP:

Wenn es Dir hilft, von PHP auf CMD zuzugreifen, um etwas auszuführen, ist system() Dein Freund, denn exec() will unter Windows seit Vista nur laufen, wenn PHP und der dazu gehörige Indianer nicht als Systemservice, sondern als normale Anwendung läuft. Auch die Kommentare lesen, denn da sind auch alternative Scriptbeispiele, die die Wscript.Shell aufrufen.

PHP:
system("cmd /c [V:/ollstaendiger/pfad/zur/dat.ei]");

Wenn die Datei dann eine foo.bat oder bar.cmd ist, kannst Du von der aus alles machen, was man damit machen kann (also fast alles).
 
ot:
Wenn Du mal ein Paar Kommata verwenden würdest bräuchte man nicht 3 Ansätze, um den Satz zu verstehen...


Aber ich muss leider bestätigen, dass das nicht zu funktionieren scheint.

Ich habe mit folgendem Code versucht, eine Batch aufzurufen:
PHP:
<?php
system("cmd /c d:\\shutdown.bat");
?>

Die Batch hatte den folgenden Inhalt:

Code:
echo off
c:\windows\system32\shutdown.exe /s /t 120

Es tat sich beim Aufrufen mit dem lokalen Apache aber leider nichts. Die Batch manuell über Windows aufzurufen funktionierte und bewirkte einen Shutdown nach 120 Sekunden. Die Batch befindet sich auch genau im Verzeichnis d:\shutdown.bat

Woran das liegt kann ich leider nicht sagen, daher frage ich auch mal nach, ob es da noch gewisse Voraussetzungen gibt.


Code bearbeitet, jetzt funktioniert es. Durch aufrufen dieser Datei wird der Server nach 2 Minuten heruntergefahren. Sollte aber noch mit Sicherheitsabfragen versehen werden ;)
 
Zuletzt bearbeitet:
Du hast Du eckigen Klammern tatsächlich in den endgültigen Befehl geschrieben? :eek:

Ihr müsst euch schon an die Syntax der entsprechenden Sprache halten.

Alles innerhalb der Anführungszeichen sind klassische CMD Befehle (früher mal BAT genannt) und seit DOS Urzeiten werden bei Beispielen und in der CMD Hilfe eckige Klammern um Parameter geschrieben, um sie in Beispielen abzugrenzen. Sie sind im eigentlichen Befehl mit den echten Pfadangaben natürlich nicht mehr enthalten. Hättet ihr im verlinkten php.net Beitrag nachgelesen, hättet ihr das auch gesehen. :ätsch

edit:
Wer hat sich daran erinnert, dass der \ in PHP eine Escape Sequenz einleitet und dementsprechend escaped werden muss, wenn er als Literal gemeint ist? ;)
 
Zuletzt bearbeitet:
Du hast Du eckigen Klammern tatsächlich in den endgültigen Befehl geschrieben? :eek:
:eek: Ja, jetzt fällt mir dieser Dusselfehler auch auf... :wand

Wer hat sich daran erinnert, dass der \ in PHP eine Escape Sequenz einleitet und dementsprechend escaped werden muss, wenn er als Literal gemeint ist? ;)

Nochmal => :wand

Danke Dir, jetzt klappt es. Ich habe den Code oben mal entsprechend korrigiert. :)

Also ich bräuchte einen Code der eine Datei vom Server aufruft!!!:cool:
Ist dieser Code wirklich dafür da?:09winter:

Der von mir geschriebenen nicht. Der soll den Server herunterfahren lassen.
 
Also ich bräuchte einen Code der eine Datei vom Server aufruft!!!:cool:
Ist dieser Code wirklich dafür da?:09winter:
Teste es selbst!

Speicher das irgendwo im Indianer Verzeichnis als batch.php ab.
Version 1 mit cmd und Parametern:
Code:
<?php 
system("cmd /c D:\\echo.cmd"); 
?>
oder Version 2 mit start anstelle cmd:
Code:
<?php 
system("start D:\\echo.cmd && exit");  
?>

Danach speichere folgendes als echo.cmd unter D: ab:
Code:
start calc.exe
exit

Danach rufe im Browser bei laufendem Indianer die batch.php auf und der Windows Taschenrechner sollte sich öffnen.
Wenn Du in der echo.cmd exit löscht, bleibt das CMD Fenster offen.
 
Zuletzt bearbeitet:
Wie kann ich auf meinen server mit php eine batch ausführen?

Es geht um einen bukkit server ich möchte die batch datei des bukkit servers ausführen und zwar auf den web-server.
Hier findet ihr die batch codes die eine Java Datei ausführen.
>>klick mich<<
Ich weiss dieses Thema hatten wir schon mal, aber jetzt würde ich gern einen klaren code sehen!:steine

Ich hoffe auf Antworten unityself.
 
AW: Wie kann ich auf meinen server mit php eine batch ausführen?

Ich weiss dieses Thema hatten wir schon mal, aber jetzt würde ich gern einen klaren code sehen!:steine

Hättest Du mal die Antworten mit klaren Codes, die man Dir bereits gegeben hätte, auch beherzigt und ausprobiert, hättest Du längst ein funktionierendes Resultat erhalten, dass Du immer wieder hättest nutzen können. Ich habe Deine (erneute) Frage hier an die alte rangehangen und das Thema auf ungelöst gesetzt.

Und jetzt würde ich gern etwas Eigeninitiative sehen! :steine
 
Ich werde aus den Beiträgen einfach nicht schlau.
Speicher das irgendwo im Indianer Verzeichnis als batch.php ab.
Was für ein Indianer Verzeichnis?
Danach speichere folgendes als echo.cmd unter D: ab:
Jetzt Plötzlich geht es um das Laufwerk D: .
Ich wollte die Datei auf dem server selbst ausführen!

Ich bitte in tiefster Verzeiflung um klare antwort.

(Sorry wegen drei Wochen ausetzer war in Italien)
Bitte helft mir
 
Zuletzt bearbeitet:
Indianer = Apache

Bist du dir sicher, dass du weißt wie PHP funktioniert, wenn du die oben aufgeführten Beispiele nicht verstehst?
 
Kann doch nicht so schwer sein, jeweils ein Paar Zeilen PHP und Batch in je eine Datei zu kopieren und diese dann aufzurufen. Dafür dass Du dich an anderer Stelle als "erfahrenen Programmierer" bezeichnet hast...

Als Beispiel nehme ich meine Variante, um meinen Laptop via Webserver herunterzufahren.

Ich verwende dazu eine shutdown.php auf dem Apache-Server mit dem folgenden Inhalt:
PHP:
<?php
system("cmd /c d:\\shutdown\\shutdown.bat");
?>

Hier ist d:\shutdown\shutdown.bat (im PHP-Code mit doppelten Backslashes (\) !!!) der Ort, an dem sich die Batch befindet.

Und diese Batch hat in meinem Fall den folgenden Inhalt:
Code:
@echo off
c:\windows\system32\shutdown.exe /s /f /t 120

Dies sorgt für ein Herunterfahren nach Ablauf der nächsten 2 Minuten.

Soooo einfach kann es sein, Batch-Code (mit dem man sich allerdings auskennen sollte) via PHP aufzurufen. Und so simpel wurde es bereits erklärt. Man muss -wie ich ebenfalls schon sagte- nur ein Bisschen Eigeninitiative einsetzen um es seinen eigenen Wünschen anzupassen.

#Nachtrag#
Natürlich wird die Batch nur dann ausgeführt, wenn sie sie auf der selben Maschine befindet wie der Webserver. Wäre ja eine Katastrophe, wenn man extern Batch aufrufen könnte.
 
Ich hab jetzt keine Kenntnisse von PHP, aber mein Verstand und simples Grundwissen über die Computer-Welt sagt mir: JA
Vorausgesetzt die Datei liegt auf d: und nicht in einem Ordner shutdown, aber wo diese Datei zum Schluss auf dem Server liegt, das weißt du am besten.


Ach und ich habe noch zwei Fragen an dich:

1)
Warum probierst du das nicht selber aus?
Wer programmiert sollte auch versuchen, selber Lösungen zu finden, besonders wenn es so einfache Dinge betrifft, die sogar ich verstehe, wobei ich PHP maximal einmal angeschaut habe.

2)
Ist das überhaupt eine ernst gemeinte Frage, oder einfach nur der Versuch, weiterhin bewusst nicht zu denken und diese Arbeit von Anderen erledigen zu lassen?
Ich meine, wenn du an einem Computer arbeitest (wovon ich ausgehe, da du ja ein erfahrener Programmierer bist), dann solltest du doch früher oder später das eine oder andere mal mit Ordnern, oder Dateien, die wiederum in Ordnern liegen, gearbeitet haben und weiß das daher dann auch, oder?



Edit:

Just nachdem ich die Nachricht abgeschickt habe, ist mir etwas klar geworden. Und zwar, dass ich deine letzte Frage vielleicht falsch verstanden habe. Wenn du also fragst, ob man nur das shutdown weg lässt, dann reicht aus, was ich geschrieben habe.
Wenn du allerdings meinst, dass nur der Datei-Name gefragt ist und der Pfad dazu unnötig ist, dann passt das wiederum nicht mehr und dafür entschuldige ich mich.

Wenn du also nur den Datei-Namen angeben willst/kannst, kann ich dir nur erzählen, wie das bei C# gemacht wird.
Dort gibt es nämlich zwei Möglichkeiten:
1. Die Eigenschaft Environment.CurrentDirectory, die den aktuellen Ordner der Anwendung zurück gibt
2. Die Zweite ist mir gerade entfallen, allerdings glaube ich, dass dieses Zeichen: ~ den Pfad auf einem Server darstelt und auch so verwendet werden kann.
 
Lies bitte meinen Edit im Beitrag. Habe ich gerade noch hinzu gefügt.

Aber eins: Ich wäre vorsichtig mit der Aussage "Ich kann PHP."
Ich würde niemals behaupten, dass ich C# wirklich kann.
Ist eine Einstellung von mir, niemals zu sagen, dass man eine Programmiersprache kann, besonders noch in so jungen Jahren.
Nur als gut gemeinter Tipp.
 
Oben