tommhii
Goto Top

Einen Parameter von einen DOS Batch an einen anderen Batch übergeben und dann je nach Parameter einen Wert zuweisen

Hallo,
ich möchte einen Parameter %1 den ich aus einen anderen DOS Batch übergeben bekommen hab einen Wert zu weisen

Hallo,

ich bekomm aus dem vorher gehenden Batch einen Parameter %1 der den Inhalt MV ,AC oder BI haben kann.
Nun möchte ich den Parameter %1 abfragen welchen Inhalt er hat und je nach Inhalt einen Wert zu weisen MV --> -u, AC ---> -t,BI --->-b

so sieht mein 2. Batch aus aber leider passt aber da etwas nicht.


@echo off
cls
if "%1"=="AC" GOTO m66 Kommentar wenn %1 gleich AC als Inhalt hat, dann springe nach m66 und setze für den Parameter para den Wert "-t" usw.
:m66
set "para=-t"
goto m99
if "%1"=="MV" GOTO m77
:m77
set "para=-u"
goto m99
if %1==BI GOTO m88
:m88
set "para=-b"
:m99
echo %1
echo %para%
pause

aber irgendwie bekomm ich das nicht hin

hat jemand eine Idee
Danke erstmal

Content-ID: 154360

Url: https://administrator.de/forum/einen-parameter-von-einen-dos-batch-an-einen-anderen-batch-uebergeben-und-dann-je-nach-parameter-einen-wert-154360.html

Ausgedruckt am: 23.12.2024 um 12:12 Uhr

BigWim
BigWim 04.11.2010 um 14:59:31 Uhr
Goto Top
Hallo tommhii

ich schätze mal (blind), dass es ein Problem der Groß/Kleinschreibung ist. Deshalb habe ich mal ein /i davor gesetzt, dann ist es nämlich egal

Ansonten würde ich das so schreiben

cls
set "para=dat war nix"  
if /i "%1"=="AC" set "para=-t"  
if /i "%1"=="MV" set "para=-u"  
if /i "%1"=="BI" set "para=-b"  
echo %1 
echo %para%

Markus
60730
60730 04.11.2010 um 15:04:09 Uhr
Goto Top
Moin,

problembatche mit @echo off face-wink krieg ich auch nen rgc counter?

zur Frage - nein das geht nicht. %1 ist %1 und bleibt es auch.

if "%1"=="AC" GOTO m66
macht keinen Sinn, weil egal was %1 wäre m66 der nächste Schritt ist.
if %1==BI GOTO m88
gleiches Spiel
Ps: bei Sprungzielen, die extern angesprochen werden macht sich das Prinzip Übergabe==Sprungname sinnvoll bemerkbar.

if not /i "%1"=="" goto %1  
echo schit happens & pause
goto end

:AC
set "para"="-t"  
echo %para%
pause
:end

gruß

edit - mein Cache spinnt..... Da war Bigwim ja schon längst dran.../edit
BigWim
BigWim 04.11.2010 um 16:00:55 Uhr
Goto Top
Zitat von @60730:

@timobeil
edit - mein Cache spinnt..... Da war Bigwim ja schon längst dran.../edit
Ein Glück!

Auf diese Idee bin ich auch noch nicht gekommen!


if not /i "%1"=="" goto %1  


Danke!
Markus
Biber
Biber 04.11.2010 um 16:42:39 Uhr
Goto Top
Ja nee, BigWim,

Zitat von @BigWim:
Auf diese Idee bin ich auch noch nicht gekommen!
 if not /i "%1"=="" goto %1  

Das ist aber superwackelig....
-> wenn ich als Parameter %1 "Goldhamster" übergebe, springt er dann zum Label :Goldhamster?
Okay, wenn ich als Parameter "Grütze", "Nesseln" oder "Kreissäge" übergebe, dann landet er genau dort, aber sonst nicht.

Dann doch lieber sowohl einen leeren wie auch alle verkehrten Parameter ausschliessen.

...
For %%i in (m66,m77,m99) do @if /i "%%i"=="%~1" Goto :%%i  
goto :Tilt

:m66
echo m66fall ...
goto :eof

:m77
echo m77fall ...
goto :eof
...
:Tilt
echo Tiltemacht...

Grüße
Biber
BigWim
BigWim 04.11.2010 um 17:24:15 Uhr
Goto Top
Hallo Biber,

vielen Dank für die Klarstellung. Habe ich verstanden - und schon wieder was zum forschen gefunden

For ... =="%~1" ....  

Markus
tommhii
tommhii 05.11.2010 um 08:43:41 Uhr
Goto Top
Super Idee klappt prima

danke Euch nochmal für die Hilfe