BATCH - START Parameterübergabe
Hallo,
ich bin dabei einige Abläufe auf unseren Server weiter zu automatisieren. Dazu verwende ich Batch-Dateien, die mit dem Befehl "START" andere Programme aufrufen. "START" deshalb, weil man dort auch die Prozesspriorität festlegen kann. Jetzt ergibt sich aber ein Problem, wenn ich Parameter mitgeben möchte.
Scheinbar unterstützt "START" nur maximal zwei Parameter. Ist das korrekt, oder kann man das Ding doch irgendwie noch überreden? Normalerweise brauche ich nämlich vier oder fünf.
Um das Problem etwas einzukreisen, hatte ich mir diese beiden simplen Testdateien gebaut.
Test50 - Parameter-Weitergabe1.cmd
Test50 - Parameter-Weitergabe2.cmd
Habe ich in der ersten Datei mehr als zwei Parameter angegeben, kommt nur dieser Müll dabei heraus:
Mit nur zwei Parametern klappt es vernünftig:
ich bin dabei einige Abläufe auf unseren Server weiter zu automatisieren. Dazu verwende ich Batch-Dateien, die mit dem Befehl "START" andere Programme aufrufen. "START" deshalb, weil man dort auch die Prozesspriorität festlegen kann. Jetzt ergibt sich aber ein Problem, wenn ich Parameter mitgeben möchte.
Scheinbar unterstützt "START" nur maximal zwei Parameter. Ist das korrekt, oder kann man das Ding doch irgendwie noch überreden? Normalerweise brauche ich nämlich vier oder fünf.
Um das Problem etwas einzukreisen, hatte ich mir diese beiden simplen Testdateien gebaut.
Test50 - Parameter-Weitergabe1.cmd
SET para1=TEST
SET para2=Ausgabe
SET para3="Hier ein Satz mit Spaces."
START "" "Test50 - Parameter-Weitergabe2.cmd" %para1% %para2% %para3%
PING -n 5 127.0.0.1 > NUL
Test50 - Parameter-Weitergabe2.cmd
ECHO Parameter 0 enthaelt immer den eigenen Pfad mit Dateinamen:
ECHO. %0
ECHO.
ECHO.
ECHO Die folgenden Ausgaben stammen alle aus der ersten CMD.
ECHO P1 und P2:
ECHO. %1 - %2
ECHO P3:
ECHO. %3
PING -n 15 127.0.0.1 > NUL
Habe ich in der ersten Datei mehr als zwei Parameter angegeben, kommt nur dieser Müll dabei heraus:
Der Befehl "D:\Eigene" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Mit nur zwei Parametern klappt es vernünftig:
Parameter 0 enthaelt immer den eigenen Pfad mit Dateinamen:
"D:\Eigene Dateien\Eigene Programme\CMD\_VORLAGEN und TESTS\Test50 - Parameter-Weitergabe2.cmd"
Hinweis: Die folgenden Ausgaben stammen alle aus der ersten CMD.
P1 und P2:
TEST - Ausgabe
P3:
"D:\Eigene Dateien\Eigene Programme\CMD\_VORLAGEN und TESTS\Test50 - Parameter-Weitergabe2.cmd"
Hinweis: Die folgenden Ausgaben stammen alle aus der ersten CMD.
P1 und P2:
TEST - Ausgabe
P3:
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 166639
Url: https://administrator.de/contentid/166639
Ausgedruckt am: 25.11.2024 um 19:11 Uhr
17 Kommentare
Neuester Kommentar
Aloha,
Parameter mit Leerzeichen würde ich ja dann mit fliegenden Zollstöcken übergeben ...
EDIT funktioniert mit
greetz André
P.S.: Die Beschränkung dürfte einstellig sein, also
"%para3%"
und wenn man unbedingt will wieder ohne aufrufen echo %~3
EDIT funktioniert mit
START
aber nicht, daher Blödsinngreetz André
P.S.: Die Beschränkung dürfte einstellig sein, also
9
bin aber nicht sicher und will's jetzt auch nicht testen
Aloha,
hm, hast ja auch schon Zollstöcke, anyway ihn stören die Zollstöcke beim Aufruf ...
Sprich: kein Parameter darf bei
greetz André
P.S.: Bei mir ist
EDIT P.S.: 9 Paramter sind die Grenze
hm, hast ja auch schon Zollstöcke, anyway ihn stören die Zollstöcke beim Aufruf ...
Sprich: kein Parameter darf bei
START
Zollzeichen enthalten oder so mit START
aufgerufen werden, wenn du den zweiten Parameter z.B. SET para2=Ausgabe Keks
setzt, wirst du feststellen, dass %3
==Keks
...greetz André
P.S.: Bei mir ist
%0
btw nur der Dateiname ...EDIT P.S.: 9 Paramter sind die Grenze
%10
ergäbe %1
mit einer Null dran ^_^Zitat von @thecaptain:
Hi,
danke für deine Mühe, aber START spinnt immer noch rum. Ich werde es jetzt so machen:
Hi,
danke für deine Mühe, aber START spinnt immer noch rum. Ich werde es jetzt so machen:
Aloha,
kann ich nicht nachvollziehen, bei mir klappt die Variante mit dem Schalter /D und dem Pfad der aufzurufenden Datei + Parameter mit Zollzeichen ...
greetz André
@Skyemugen
Grüße
bastla
9 Paramter sind die Grenze %10 ergäbe %1 mit einer Null dran ^_^
... allerdings gäbe es da zu Not noch "shift
" ... Grüße
bastla
@Skyemugen
Bittesehr:
Wenn Du nicht wissen solltest, wie viele Parameter ankommen, dann etwa so:
Grüße
bastla
Bittesehr:
@echo off & setlocal
call :UP 1 2 3 4 5 6 7 8 9 10 11
goto :eof
:UP
echo Parameter 1: %1
echo Parameter 2: %2
echo Parameter 3: %3
echo Parameter 4: %4
echo Parameter 5: %5
echo Parameter 6: %6
echo Parameter 7: %7
echo Parameter 8: %8
echo Parameter 9: %9
shift
echo Parameter 10: %9
shift
echo Parameter 11: %9
@echo off & setlocal
call :UP 1 2 3 4 5 6 7 8 9 10 11
goto :eof
:UP
set /a Nr=1
:Loop
if .%1==. goto :eof
echo Parameter %Nr%: %1
set /a Nr+=1
shift
goto :Loop
bastla