Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

GELÖST

FOR Schleife - Befehl aufrufen mit übergebenen Parametern

Mitglied: IMG.SN

IMG.SN (Level 1) - Jetzt verbinden

16.12.2011 um 22:33 Uhr, 3584 Aufrufe, 8 Kommentare

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
01.
@echo off 
02.
FOR /F "eol= tokens=* delims=" %%i IN ('"C:/PHP/php.exe" C:/PHP/test.php %1' ) do ( 
03.
 
04.
    echo %%i 1>&2 
05.
    exit 1 
06.
)
Test.php
01.
<?php 
02.
echo $argv[1]; 
03.
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.
Mitglied: 60730
16.12.2011 um 22:45 Uhr
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.

  • 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"

Gruß
Bitte warten ..
Mitglied: IMG.SN
16.12.2011 um 22:51 Uhr
Bin was das angeht sehr neu.
EOL - ich hatte zu Anfang Probleme den kompletten Text auszugeben.
Tokens =* - wenn ich da richtig informiert bin erhalte ich dadurch alle Zeichen aus dem zurück gegebenen Text
@echo off - hatte ich übernommen

'"C:/PHP/php.exe C:/PHP/test.php %1" - hier soll die PHP.exe aufgerufen werden, das Test.php ist die Datei die Php parsen soll und alle Argumente die danach kommen werden an diese Datei weitergegeben.

Ich hoffe es ist jetzt ein wenig verständlicher.
Bitte warten ..
Mitglied: 60730
17.12.2011 um 01:18 Uhr
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.
01.
"C:/PHP/php.exe" C:/PHP/test.php "%1" & echo %1
Bitte warten ..
Mitglied: IMG.SN
17.12.2011 um 10:03 Uhr
Danke für deine Hilfe.
Soll ich das @echo off nun weg lassen?

Wenn ich das mit dem & Zeichen mache, erhalte ich die Meldung:

"&" kann an dieser Stelle Syntaktisch nicht verarbeitet werden.
Bitte warten ..
Mitglied: bastla
17.12.2011 um 21:23 Uhr
Hallo IMG.SN und willkommen im Forum!

Innerhalb der "for"-Schleifen-Definition musst Du einige Sonderzeichen (neben "&" auch etwa "|", "<" und ">") durch ein vorangestelltes "^" maskieren ...

Grüße
bastla
Bitte warten ..
Mitglied: IMG.SN
18.12.2011 um 11:08 Uhr
Hallo,

ich hab das jetzt folgender Maßen eingesetzt:

01.
FOR /F "eol= tokens=* delims=" %%i IN ('"C:/PHP/php.exe" C:/PHP/test.php ^& echo %1' ) do ( 
02.
 
03.
    echo %%i 1>&2 
04.
    exit 1 
05.
)
Leider erhalte ich jetzt folgende Fehlermeldung:
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

Mach ich das vielleicht alles zu kompliziert?
Wichtig ist eigentlich nur das wenn ein Text zurück kommt, dass das Programm mit Exit 1 beendet wird mehr will ich ja nicht.
Bitte warten ..
Mitglied: bastla
18.12.2011 um 11:18 Uhr
Hallo IMG-SM!
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
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:
C:\PHP\php.exe C:\PHP\test.php %1||exit 1
Grüße
bastla
Bitte warten ..
Mitglied: IMG.SN
18.12.2011 um 11:26 Uhr
Vielen Dank, das war die Lösung.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: Parameter in einer For Schleife an eine Variable übergeben
gelöst Frage von BatchAnfaenger91Batch & Shell2 Kommentare

Hallo Liebe Leute, nun bin ich fast am Ende und bleibe trotzdem an Parameterübergabe hängen. Hier ist mein bisheriger ...

Batch & Shell
Powershell: Anführungszeichen in Parameter mit übergeben
Frage von tralvellerBatch & Shell3 Kommentare

Hallo zusammen, ich erstelle mir gerade ein Powershell-Skript welches mit Parameter arbeitet und zum Beispiel einen Pfad mit Leerzeichen ...

Batch & Shell
Anführungszeichen aus übergebenen Parametern entfernen
gelöst Frage von RaidManBatch & Shell2 Kommentare

Hallo Kenner und Könner, bin gerade dabei eine Batch zu basteln die Textdateien (detail infos) ändern soll dazu wollte ...

Batch & Shell
Parameter für plink-Aufruf
gelöst Frage von trobonarfBatch & Shell4 Kommentare

Hallo, ich führe via plink ein lokales Skript auf dem Server aus - das klappt soweit. Beispiel: .\plink.exe -ssh ...

Neue Wissensbeiträge
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 3 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 8 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement21 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...