24855

Abfrage, ob Parametervariable initialisiert

ich habe eine Batch geschrieben der 4 Variablen als Parameter übergeben werden,
ich möchte jetzt die 4. Variable mit einer art "default Wert" belegen, der soll verwendet werden, wenn der user nur 3 Parameter an seinen Aufruf anhängt.

Aufruf ...batchdateiname var1 var2 var3 var4...

if "%4"="" ... hier soll der wert der variable auf "c" gesetzt werden (ohne anführungszeichen) wenn If nicht erfüllt ist..


ich weis auch nicht genau ob da 2 % Zeichen hingehören in die Bedingte Anweisung

Schonmal ein DANKE für eine Antwort face-smile
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 27202

Url: https://administrator.de/forum/abfrage-ob-parametervariable-initialisiert-27202.html

Ausgedruckt am: 19.05.2025 um 07:05 Uhr

Dani
Dani 02.03.2006 um 10:54:01 Uhr
Goto Top
Hi,
probier's mal damit:

@echo off
if "%4" == "" goto t1
if not "%4" == "" goto t2

:t1
set var4=10
goto ende

:t2
var4=%4
goto ende

:ende
echo %var4%


Gruß
Dani
24855
24855 02.03.2006 um 11:05:12 Uhr
Goto Top
Danke Dir Dani! face-smile

geht es denn so???

if "%4" == "" set "c"=%4

Ich brauche keine Sprungmarken oder der gleichen es sei denn das lässt sich nicht anders realisieren, ich möchte ja eigentlich nur wissen, wie ich den Wert von %4 = "c" setze wenn "%4" == "" zutrifft!
Dani
Dani 02.03.2006 um 11:13:34 Uhr
Goto Top
Hi,
so muss es geht:
if "%4" == "" set c=%4


Gruß
Dani
24855
24855 02.03.2006 um 11:47:50 Uhr
Goto Top
mhh leider geht es so nicht ... er übergibt die variablen nicht .. an der stelle..wo sie sonst wenn ich sie als parameter übergebe stehen.. ist jetzt nichts bei der ausgabe auf der konsole zu sehen, also wird nichts übergeben, variablen sind leer

mein code:

REM Überprüfung ob Ziellaufwerk uebergeben wurde sonst
REM
setzen auf DEFAULT C

if "%4" == "" set e=%4

REM Überprüfen ob Benutzername übergeben wurde sonst
REM
setzen auf DEFAULT ADMINISTRATOR

if "%3" == "" set "Administrator"=%3

Liegt bestimmt nur an nem detail, oder kann man Umgebungsvariablen nicht nachträglich ändern? dann müsste man erst die Umgebungsvariablen in einen reguläre kopieren und dann mit dieser arbeiten.. geht dass auch mit set? .. bei normalen variablen muss ich doch 2 %% benutzen oder?
Dani
Dani 02.03.2006 um 12:51:02 Uhr
Goto Top
Hi,
mach mal die " bei Administrator weg! Probier mal das Ganze mit meiner Vorlage oben.

Gruß
Dani
Dani
Dani 02.03.2006 um 12:51:04 Uhr
Goto Top
Hi,
mach mal die " bei Administrator weg! Probier mal das Ganze mit meiner Vorlage oben.

Gruß
Dani
Biber
Biber 02.03.2006 um 13:04:32 Uhr
Goto Top
Moin WI#Janosch,
mach es so:
::---snipp DeinBatch.bat
@echo off & setlocal
If "%4"=="" %0 %* c
(der Rest vom Batch)
::---snapp DeinBatch.bat

HTH
Biber
24855
24855 02.03.2006 um 15:10:56 Uhr
Goto Top
Ich glaub es kaum aber mit den Sprungmarken geht es warum auch immer:

REM Überprüfung ob Ziellaufwerk uebergeben wurde sonst
REM
setzen auf DEFAULT C //hier noch zu testzwecken e

if "%4" == "" goto t1
if not "%4" == "" goto t2

:t1
set var4=e
goto ende

:t2
var4=%4
goto ende

:ende


REM Überprüfen ob Benutzername übergeben wurde sonst
REM
setzen auf DEFAULT ADMINISTRATOR

if "%3" == "" goto t11
if not "%3" == "" goto t22

:t11
set var3=administrator
goto ende1

:t22
var3=%3
goto ende1

:ende1


funktioniert face-smile

sry Biber .. hab erst noch n anderes Prob Lösen müssen, vielleicht hätt ich dir dann dein Post ersparen können face-wink

thx 2 ALL
Biber
Biber 02.03.2006 um 17:24:43 Uhr
Goto Top
Na, WI#Janosch,

trotzdem will ich diesen Spaghetticode nicht so stehen lassen..

a) Wenn es nur um den Parameter 4 geht, der optional ist, siehe meinen Post oben.
b) Wenn Parameter 3 und 4 optional sind, dann tatsächlich Zwischenvariablen verwenden:

...
If [%2]== echo %0: Parameter 2 fehlt! & goto :eof
If [%1]== echo %0: Parameter 1 und 2 fehlen! & goto :eof
:: --- Parameter 3 und 4 sind optional mit Default
If [%4]== (set "par4=c") else set "par4=%4"
If [%3]== (set "par3=Administrator") else set "par3=%3"

Call MachIrgendwas.bat %1 %2 %par3% %par4%
...

Gruß
Biber
[Edit] set's bei Par3 und Par4 in Klammern gesetzt. [/Edit]