ermittelten Wert aus Perl in eine Windows-bat/cmd in Variable übergeben
Hallo zusammen,
ihr seit meine letzte Hoffnung!
Suche schon seit Stunden nach einer Lösung für dieses, an sich kleine Problem.
Das ganze bezieht sich auf ein Windows-System(XP pro und Server 2k3).
Hab ein Perl-skript(bzw wird über "perl xxx.pl Parameter1 Parameter2" aufgrufen) das eine Zahl ausspuckt. Diese Zahl möchte ich als Variable in einer bat/cmd Datei weiterverarbeiten.
Hab auch schon den Umweg über eine Ausgabe in eine Datei "perlskript >> Dateiname" und
anschließenden Wiedereinlesen versucht.
Ist beim Versuch geblieben...
Da er mir bei "set a=type dateiname" nur "type dateiname" reinschreibt und beim pipen mach ich wohl noch nen Denkfehler (set a= | type dateiname).
Am liebsten wär es mir natürlich, wenn man im Perlskript schon eine Variable betanken könnte, die auch in der Batch lesbar wär.
Falls mir da einer auf die Sprünge helfen kann, schon mal Danke im voraus!
Gruß, Thomas
ihr seit meine letzte Hoffnung!
Suche schon seit Stunden nach einer Lösung für dieses, an sich kleine Problem.
Das ganze bezieht sich auf ein Windows-System(XP pro und Server 2k3).
Hab ein Perl-skript(bzw wird über "perl xxx.pl Parameter1 Parameter2" aufgrufen) das eine Zahl ausspuckt. Diese Zahl möchte ich als Variable in einer bat/cmd Datei weiterverarbeiten.
Hab auch schon den Umweg über eine Ausgabe in eine Datei "perlskript >> Dateiname" und
anschließenden Wiedereinlesen versucht.
Ist beim Versuch geblieben...
Da er mir bei "set a=type dateiname" nur "type dateiname" reinschreibt und beim pipen mach ich wohl noch nen Denkfehler (set a= | type dateiname).
Am liebsten wär es mir natürlich, wenn man im Perlskript schon eine Variable betanken könnte, die auch in der Batch lesbar wär.
Falls mir da einer auf die Sprünge helfen kann, schon mal Danke im voraus!
Gruß, Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 33266
Url: https://administrator.de/forum/ermittelten-wert-aus-perl-in-eine-windows-bat-cmd-in-variable-uebergeben-33266.html
Ausgedruckt am: 06.04.2025 um 05:04 Uhr
3 Kommentare
Neuester Kommentar
Moin rudi,
die einfachsten Varianten wären:
Alternativ (aber umwegiger) über Outputumlenkung in eine Textdatei:
perl xxx.pl Parameter1 Parameter2>%temp%\Dateiname.xyz
Set /P variable=<%temp%\Dateiname.xyz
...was den Nachteil hat, dass hier ein weiterer M$-Bug vor sich hin fehlert: "Set /P" und "Set /A" lassen sich nicht gleichzeitig verwenden (Du kannst mit Set /P keine in Bill Gates Sinn numerische Variable abfragen).
Ist nach meinen Unterlagen der M$-CMD-Bug 5613.... *gg
Hope That Helps
Biber
die einfachsten Varianten wären:
[vom CMD-Prompt]
for /F %i in ('perl xxx.pl Parameter1 Parameter2') do set "variable=%i"
-bzw-
[im Batch]
for /F &%i in ('perl xxx.pl Parameter1 Parameter2') do set "variable=%%i"
-oder, wenn Du mit der Rückgabe-Variablen rechnen willst/musst:-
for /F %%i in ('perl xxx.pl Parameter1 Parameter2') do set /a "variable=%%i"
Alternativ (aber umwegiger) über Outputumlenkung in eine Textdatei:
perl xxx.pl Parameter1 Parameter2>%temp%\Dateiname.xyz
Set /P variable=<%temp%\Dateiname.xyz
...was den Nachteil hat, dass hier ein weiterer M$-Bug vor sich hin fehlert: "Set /P" und "Set /A" lassen sich nicht gleichzeitig verwenden (Du kannst mit Set /P keine in Bill Gates Sinn numerische Variable abfragen).
Ist nach meinen Unterlagen der M$-CMD-Bug 5613.... *gg
Hope That Helps
Biber
Moin rudi,
*rotwerd*
Mir auch nichts - das war einer meiner üblichen Tippfehler
Im Batch müssen bei den FOR..IN..DO-Zählvariablen zwei Prozentzeichen statt einem am CMD-Prompt vorangestellt werden.
Also, wenn am CMD-Prompt
for %i in (eins, zwei, drei) do @echo %i
..das Gewünschte liefert, dann in einem Batch entsprechend
for %%i in (eins, zwei, drei) do @echo %%i
...um zu dem gleichen Ergebnis zu kommen.
Bei Dir entsprechend (korrigierte Version):
Zu Deiner Link-Frage:
Im Bereich Batch & Shell habe ich ein paar (wenige) Links zu ein paar Batch-Tutorials eingetragen.
Die beziehen sich auch auf die etwas neueren Features und Möglichkeiten.
Ansonsten ist leider vieles zum Thema Batch, was so über Suchmaschinen zu finden ist, noch aus DOS- Zeiten.
Die Windows-Hilfe zu den einzelnen Befehlen gibt auch einiges her (bei FOR /?; CALL /?; IF /?; GOTO /?..).
Die Hilfe zu SET (SET /?) ist wirklich ein äußerst schlechter Einstieg - schau da noch mal rein, wenn Du die anderen paar überflogen hast.
Gruß
Biber
aber &% sagt mir nichts.
*rotwerd*
Mir auch nichts - das war einer meiner üblichen Tippfehler
Im Batch müssen bei den FOR..IN..DO-Zählvariablen zwei Prozentzeichen statt einem am CMD-Prompt vorangestellt werden.
Also, wenn am CMD-Prompt
for %i in (eins, zwei, drei) do @echo %i
..das Gewünschte liefert, dann in einem Batch entsprechend
for %%i in (eins, zwei, drei) do @echo %%i
...um zu dem gleichen Ergebnis zu kommen.
Bei Dir entsprechend (korrigierte Version):
[vom CMD-Prompt]
for /F %i in ('perl xxx.pl Parameter1 Parameter2') do set "variable=%i"
-bzw-
[im Batch]
for /F %%i in ('perl xxx.pl Parameter1 Parameter2') do set "variable=%%i"
Zu Deiner Link-Frage:
Im Bereich Batch & Shell habe ich ein paar (wenige) Links zu ein paar Batch-Tutorials eingetragen.
Die beziehen sich auch auf die etwas neueren Features und Möglichkeiten.
Ansonsten ist leider vieles zum Thema Batch, was so über Suchmaschinen zu finden ist, noch aus DOS- Zeiten.
Die Windows-Hilfe zu den einzelnen Befehlen gibt auch einiges her (bei FOR /?; CALL /?; IF /?; GOTO /?..).
Die Hilfe zu SET (SET /?) ist wirklich ein äußerst schlechter Einstieg - schau da noch mal rein, wenn Du die anderen paar überflogen hast.
Gruß
Biber