FOR Schleife - Befehl aufrufen mit übergebenen Parametern
Hallo zusammen, ich möchte gleich vorweg sagen das ich ein Neuling bin was Batch Dateien angeht und deren Befehle.
Ich sitze nun schon den ganzen Nachmittag an einem Problem.
Ich habe einen Client Side SVN Hook erstellt. Der Hook wird aufgerufen und übergibt verschiedene Parameter an die Batch Datei. Dabei ist nur der erste Parameter wichtig, dieser gibt mir den Dateipfad zu einer weiteren Datei.
Ich möchte diese Datei an ein PHP Script übergeben und bei Errors soll der Hook ein Error senden (Exit 1). Dies klappt soweit auch schon.
Das Problem was ich habe ist das ich den ersten Parameter nicht durchgeschliffen bekomme. Das Script wird aufgerufen hat aber den Dateipfad nicht in der Parameter Liste.
Das ganze lasse ich über eine FOR-Schleife in Batch laufen. Dort habe ich die möglich das wenn eine Ausgabe kommt ich das Exit 1 senden kann.
Am besten ich zeige euch einmal den Code.
commit.bat
Test.php
Die Ausgabe die dabei erscheint ist einfach nur "%1", an der Stelle sollte aber der Dateipfad erscheinen mit dem die Batch Datei aufgerufen wurde.
Ich hoffe mir kann einer helfen.
Ich sitze nun schon den ganzen Nachmittag an einem Problem.
Ich habe einen Client Side SVN Hook erstellt. Der Hook wird aufgerufen und übergibt verschiedene Parameter an die Batch Datei. Dabei ist nur der erste Parameter wichtig, dieser gibt mir den Dateipfad zu einer weiteren Datei.
Ich möchte diese Datei an ein PHP Script übergeben und bei Errors soll der Hook ein Error senden (Exit 1). Dies klappt soweit auch schon.
Das Problem was ich habe ist das ich den ersten Parameter nicht durchgeschliffen bekomme. Das Script wird aufgerufen hat aber den Dateipfad nicht in der Parameter Liste.
Das ganze lasse ich über eine FOR-Schleife in Batch laufen. Dort habe ich die möglich das wenn eine Ausgabe kommt ich das Exit 1 senden kann.
Am besten ich zeige euch einmal den Code.
commit.bat
@echo off
FOR /F "eol= tokens=* delims=" %%i IN ('"C:/PHP/php.exe" C:/PHP/test.php %1' ) do (
echo %%i 1>&2
exit 1
)
Test.php
<?php
echo $argv[1];
exit(1);
Die Ausgabe die dabei erscheint ist einfach nur "%1", an der Stelle sollte aber der Dateipfad erscheinen mit dem die Batch Datei aufgerufen wurde.
Ich hoffe mir kann einer helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 177818
Url: https://administrator.de/forum/for-schleife-befehl-aufrufen-mit-uebergebenen-parametern-177818.html
Ausgedruckt am: 23.04.2025 um 09:04 Uhr
8 Kommentare
Neuester Kommentar

moin,
weniger ist meistens mehr... ich hab aber auch nur grob drüber gesehen da ich den Sinn (oder den, den du dir von Ihr erhoffst) der Schleife an der Stelle nicht verstehe.
und auch hier:
Gruß
weniger ist meistens mehr... ich hab aber auch nur grob drüber gesehen da ich den Sinn (oder den, den du dir von Ihr erhoffst) der Schleife an der Stelle nicht verstehe.
- eol=
- Tokens=*
- @echo off
und auch hier:
'"C:/PHP/php.exe" C:/PHP/test.php %1
'"C:/PHP/php.exe C:/PHP/test.php %1"
'"C:/PHP/php.exe C:/PHP/test.php %1"
Gruß

moin,
Bin was das angeht sehr neu.
@echo off * grmblfix....Die Ausgabe die dabei erscheint ist einfach nur "%1", an der Stelle sollte aber der Dateipfad erscheinen mit dem die Batch Datei aufgerufen wurde.
"C:/PHP/php.exe" C:/PHP/test.php "%1" & echo %1
Hallo IMG-SM!
Natürlich muss der beim Aufruf des Batches übergebene Pfad unter Anführungszeichen stehen, wenn er Leerzeichen oder etwa "&" enthält ...
... allerdings wäre es noch einfacher, wenn der PHP-Aufruf selbst einen Errorlevel (ungleich 0) zurückgibt:
Grüße
bastla
Wichtig ist eigentlich nur das wenn ein Text zurück kommt, dass das Programm mit Exit 1 beendet wird mehr will ich ja nicht.
Dann sollte eigentlich eine Zeile reichen:for /f %%i IN ('C:\PHP\php.exe C:\PHP\test.php %1' ) do exit 1
... allerdings wäre es noch einfacher, wenn der PHP-Aufruf selbst einen Errorlevel (ungleich 0) zurückgibt:
C:\PHP\php.exe C:\PHP\test.php %1||exit 1
bastla