xaero1982
Goto Top

Batch - PHP - W10 - w7 - w2k8r2

Moin,

ich hab ein PDF Script in dem ich eine Batchdatei aufrufe und Parameter übergebe.

Ich benutze pdftk um die Seitenzahl einer PDF Datei auszulesen. Die Zahl speicher ich in einer Variable.
Klappt auf meinem PC (Windows 10 Pro + Xampp) problemlos.

Kopiere ich das gleiche auf einen W7 oder W2k8r2 Rechner passiert folgendes:

Bei mir (ausgabe im Browser wenn ich echo on stelle in der Batch)
C:\xampp\htdocs\stamp>for /F "tokens=2" %A in ('pdftk "c:\xampp\htdocs\stamp\uploads\Name.pdf" dumpdata | findstr NumberOfPages') do set numberofpages=%A C:\xampp\htdocs\stamp>set numberofpages=1   

Auf dem anderen PC:
C:\xampp\htdocs\stamp>for /F "tokens=2" %A in ('pdftk "c:\xampp\htdocs\stamp\uploads\Name.pdf" dumpdata | findstr NumberOfPages') do set numberofpages=%A  

Das Set funktioniert nicht. Führe ich das direkt in der cmd aus funktioniert es. Woran kann das liegen? Unter W10 geht beides...

Grüße
Xaero

Content-Key: 331351

Url: https://administrator.de/contentid/331351

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: Xaero1982
Xaero1982 06.03.2017 um 22:17:51 Uhr
Goto Top
Also so richtig schlau draus werde ich nicht:

setlocal ENABLEDELAYEDEXPANSION

for /f "tokens=2" %%I in ('cmd /c pdftk "c:\xampp\htdocs\stamp\uploads\Vertrag.pdf" dumpdata ^| findstr NumberOfPages') do ( echo %%I   
set numberofpages=%%I 
Echo !numberofpages!
)


for /f "tokens=13" %%I in ('cmd /c ipconfig ^| findstr IPv4-Adresse') do (   
set ip4=%%I 
Echo !ip4!
)

Führe ich die Batch aus geht beides ...
Rufe ich die Batch via PHP auf geht letzteres, aber das erste geht nicht. Da kommt folgendes raus:

C:\xampp\htdocs\stamp>setlocal ENABLEDELAYEDEXPANSION C:\xampp\htdocs\stamp>for /F "tokens=2" %I in ('cmd /c pdftk "c:\xampp\htdocs\stamp\uploads\Name.pdf" dumpdata | findstr NumberOfPages') do ( set numberofpages=%I Echo !numberofpages! )   

C:\xampp\htdocs\stamp>for /F "tokens=13" %I in ('cmd /c ipconfig | findstr IPv4-Adresse') do ( set ip4=%I Echo !ip4! ) C:\xampp\htdocs\stamp>( set ip4=192.168.0.4 Echo !ip4! ) 192.168.0.4  

Der Schritt mit dem Set wird nicht wieder ausgegeben...

Was ist da los? face-sad
Mitglied: rubberman
rubberman 06.03.2017 aktualisiert um 23:34:33 Uhr
Goto Top
Hallo Xaero1982

1) Ich würde da mal in Richtung Arbeitsverzeichnis der Batchdatei denken. Gib doch mal %cd% aus und schau dir an ob sich pdftk ohne Pfadangabe überhaupt finden lassen würde.
2) cmd /c Kommandozeilen haben ihre eigene Syntax. Mal abgesehen davon, dass ich nicht glaube dass du cmd /c brauchst, müsste das Ganze in diesem Fall wohl eher so aussehen:
cmd /c "pdftk "c:\xampp\htdocs\stamp\uploads\Name.pdf" dumpdata"

Grüße
rubberman
Mitglied: Xaero1982
Xaero1982 07.03.2017 um 01:26:12 Uhr
Goto Top
Hi Rubberman,

ja, pdftk ist in die Umgebungsvariablen eingetragen und funktioniert. Wie gesagt, rufe ich das Script mit entsprechenden Parametern in der CMD direkt auf geht es.

Die Syntax ist korrekt und funktioniert bei mir zu Hause mit dem gleichen xampp problemlos

Das würde nicht gehen in PHP ... falsch gesetzte ""

Grüße
X
Mitglied: Xaero1982
Xaero1982 07.03.2017 um 23:09:29 Uhr
Goto Top
War ein Berechtigungsproblem ... xampp direkt noch mal als Administrator ausgeführt - läuft.