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-Key: 154360

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

Printed on: April 26, 2024 at 04:04 o'clock

Member: BigWim
BigWim Nov 04, 2010 at 13:59:31 (UTC)
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
Mitglied: 60730
60730 Nov 04, 2010 at 14:04:09 (UTC)
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
Member: BigWim
BigWim Nov 04, 2010 at 15:00:55 (UTC)
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
Member: Biber
Biber Nov 04, 2010 at 15:42:39 (UTC)
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
Member: BigWim
BigWim Nov 04, 2010 at 16:24:15 (UTC)
Goto Top
Hallo Biber,

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

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

Markus
Member: tommhii
tommhii Nov 05, 2010 at 07:43:41 (UTC)
Goto Top
Super Idee klappt prima

danke Euch nochmal für die Hilfe