invisan
Goto Top

Ersetzen von leeren Parametern mittels CMD

Hi zusammen,

ich habe derzeit ein Problem beim ersetzen von leeren Parametern in einem Bat File die ich mittels CMD übergebe.

Der Aufruf sieht wie folgt aus.

meinecmd.bat 1 1 "leer" "leer" (Das "leer" soll symbolisieren das hier theoretisch auch 0 bzw 1 stehen könnte.

Die Abfrage in der bat sieht nun wie folgt aus.

if not defined %4 ( set /a %4=0 )
if not defined %3 ( set /a %3=0 )
if not defined %2 ( set /a %2=0 )
if not defined %1 ( set /a %1=0 )


echo this is 1 %1 .
echo this is 2 %2 .
echo this is 3 %3 .
echo this is 4 %4 .


Gebe ich das ganze jetzt allerdings via Echo zurück bekomme ich in der cmd folgende Ausgabe:

E:\cmd>if not defined ( set /a =0 )
Fehlender Operand

E:\cmd>if not defined ( set /a =0 )
Fehlender Operand

E:\cmd>if not defined 1 (set /a 1=0  )
Fehlender Operator

E:\cmd>if not defined 1 (set /a 1=0  )
Fehlender Operator


Hat irgendwer eine Idee wie ich diese Fehler umgehen kann? Sprich wenn die Werte nicht gesetzt sind sie in der bat setzen kann?


Mfg Patrick

Content-Key: 366770

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

Printed on: April 19, 2024 at 03:04 o'clock

Member: AndreasHoster
Solution AndreasHoster Mar 02, 2018 at 13:51:50 (UTC)
Goto Top
Du kannst die Parametervariablen (%0 bis %9) nur auslesen, nicht setzen.
Außerdem ist if defined / if not defined etwas Buggy:
Da %0 nichts ist, sieht die CMD nur if not defined und meckert deswegen einen fehlenden Operanden an. Was immer MS da auch gedacht hat.

Was geht wäre sowas (Übernahme in eigene Variable x):
set x=%1
if [%1]== set x=0
echo %x%
Member: Invisan
Invisan Mar 02, 2018 at 14:10:37 (UTC)
Goto Top
Doh >.<
Da hätte ich auch selbst drauf kommen können.
Danke dir Andreas face-smile