PHP Batch

PHP-Scripte werden normalerweise vom einen Webserver aus gestartet, aber es ist auch möglich diese direkt in der Eingabeaufforderung zu starten. Warum sollte man das tun? - PHP hat hervorragende Dateisystem-Funktionen, Reguläre Ausdrücke, einfache http-Funktionen und ist mit Modulen erweiterbar.

 

Damit kein unnötiger HTML-Code ausgegeben wird, gibt es ein spezielle CLI-Version (Command Line Interface). Zusätzlich wird noch eine DLL-Datei (php4ts.dll, php5ts.dll, php7ts.dll oder php8ts.dll) benötigt, wo die Grundfunktionen von PHP enthalten sind.
Dummerweise kann man PHP-Scripe nicht direkt starten. Unter Linux muß man nur in der ersten Zeile: #!/pfad/php eintragen und schon kann das Script direkt gestartet werden.

Beispiel:
#!/usr/bin/php
<?php

 echo "Hello World!\n";

?>
 

Unter Windows geht das so nicht. Der normale weg, wäre über die Eingabeaufforderung, was aber nicht wirklich komfortabel ist.:

 

Die einzige Lösung ist, PHP als Batch-Script (Win32) zu starten! PHP wird mit einen Mini-Script gestartet, das das eigentliche PHP-Script automatisch mit den Optionalen Eingabe-Parametern ausführt.

 

Das funktioniert unter folgenden Bedingungen:

 Einfache Beispiellösung:
@php -r"eval(preg_replace('/.+?<\?\w*(.+)\?>/s','\1',file_get_contents('%~f0')));" -- %*&goto:eof
<?php

 echo "Hello World!\n";

?>
 

Zuerst wird das Script mit PHP geladen und anschließend wird das eigentliche PHP-Script mit Regulären Ausdrücken extrahiert, was dann an eval zusammen mit optionalen Argumenten übergeben wird.

 

Für einfache Aufgaben wird es sicherlich reichen, aber beim Einsatz von Erweiterungen oder anderen Speziellen Aufgaben wird es Probleme geben:

 

Da Windows und PHP Umgebungsvariablen beherrschen kann man viele Probleme praktisch umgehen.

Die folgene Lösung ist etwas komplexer aber auch Komfortabler:
@set 0=%0&set 1=%~f0&set 2=%cd%&%~d0&cd %~p0
@if exist ext set phpext=ext
@if exist php.exe set php=php
@if exist php.ini set phpopt=-cphp.ini
@if "%php%"=="" set php=php
@if "%phpopt%"=="" set phpopt=-dextension_dir=./%phpext%
@"%php%" "%phpopt%" -r"eval(preg_replace('/^[@:].*$(?=\C*<\?)|^<\?\w*|^\?>\s*$/m','',file_get_contents($_SERVER['argv'][0]=$argv[0]=getenv(1))));if(strchr(getenv(0),chr(34))and!strpos(getenv('PSModulePath'),getenv('USERNAME')))passthru('pause');" -- %*&goto:eof
<?php

 echo "Hello World!\n";

?>
  

Es können zwei Umgebungsvariablen gesetzt werden:

 

Intern werden vier weitere Umgebungsvariablen gesetzt:

 

Weitere Funktionen:

 

Download

PHP BatchScript 1 KBAlle Script-Varianten ohne PHP
PHP 4.4.932 Bit 475 KBKleintest Paket für alle Windows-Varianten, Quelle: php-4.4.9-Win32.zip
PHP 5.3.532 Bit 1.82 MBLetzte Version für Windows 98/ME & NT/2000/XP ohne zusätzliche Bibliotheken, Quelle: php-5.3.5-Win32-VC6-x86.zip
PHP 5.3.2932 Bit 1.87 MBBenötigt bis Windows XP: vcredist_x86_vc9.exe, Quelle: php-5.3.29-Win32-VC9-x86.zip
PHP 5.4.4532 Bit 2.11 MBLetzte Version für Windows XP - Benötigt bis Windows XP: vcredist_x86_vc9.exe , Quelle: php-5.4.45-Win32-VC9-x86.zip
PHP 5.6.4032 Bit 2.38 MBBenötigt: VC11, Quelle: php-5.6.40-Win32-VC11-x86.zip
PHP 7.0.3332 Bit 2.18 MBBenötigt: VC14, Quelle: php-7.0.33-Win32-VC14-x86.zip
PHP 7.1.3332 Bit 2.27 MBBenötigt: VC14, Quelle: php-7.1.33-Win32-VC14-x86.zip
PHP 7.2.3432 Bit 2.32 MBBenötigt: VC14 oder VC15, Quelle: php-7.2.34-Win32-VC15-x86.zip
PHP 7.3.3332 Bit64 Bit3 MBBenötigt: VC14 oder VC15, Quelle: php-7.3.33-Win32-VC15-x86.zip, php-7.3.33-Win32-VC15-x64.zip
PHP 7.4.3332 Bit64 Bit3 MBBenötigt: VC15/16
PHP 8.0.3032 Bit64 Bit3 MBBenötigt: VC16
PHP 8.1.x32 Bit64 Bit3 MBBenötigt: VC16
PHP 8.2.x32 Bit64 Bit3 MBBenötigt: VC16
PHP 8.3.x32 Bit64 Bit3 MBBenötigt: VC16
QuickPHP 5.332 Bit 2.97 MBPHP mit Webserver und einigen Erweiterungen - Benötigt bis Windows XP: vcredist_x86_vc9.exe
WebPHP 5.432 Bit 3.58 MBPHP mit Buildin-Webserver und einigen Erweiterungen - Benötigt bis Windows XP: vcredist_x86_vc9.exe
WebPHP 5.632 Bit 3.90 MBPHP mit Buildin-Webserver und einigen Erweiterungen - Benötigt: VC11
WebPHP 7.132 Bit 3.96 MBPHP mit Buildin-Webserver und einigen Erweiterungen - Benötigt: VC14
WebPHP 8.2 64 Bit7.30 MBPHP mit Buildin-Webserver und einigen Erweiterungen - Benötigt: VC16
 

Alle Binaer-Dateien stammen unverändert von windows.php.net

Kategorie: PHP, PHPBatch, Konsole, Windows, 7-Zip, Video


 << Links | Home | Serien >> << LAN Check | Projekte | PmWiki >>

Inhalt

 



Menü Ausschalten