eccos01
Goto Top

In Batch-Skript Bedingungen verknüpfen

Hallo,

ich möchte 2 If-Abfragen miteinander verknüpfen...
Bedingung: Wenn die Variable %VAR01% nicht definiert ist ODER die Datei "%ANW_PFAD%\dateiname.bsp" nicht existiert, dann "echo tu dies und das".

Wie kann man das in einer Anweisung (ohne geschachtelte IF-Anweisungen) schreiben?
Also nicht so:
if not defined VAR01 (
echo tu dies und das
) else (
if not exist "%ANW_PFAD%\dateiname.bsp" (
echo tu dies und das
)
)

Content-Key: 161036

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

Printed on: April 20, 2024 at 00:04 o'clock

Member: Biber
Biber Feb 17, 2011 at 17:53:43 (UTC)
Goto Top
Moin eccos01,

du kannst es bestenfalls andersherum formulieren
if defined VAR01 if exist "%ANW_PFAD%\dateiname.bsp" (  
echo tuAllesPrimaPart
  ) else (
        echo tu dies und das
)
...wobei ich das für Augenwischerei halte.
Denn du wirst nicht "tu dies und das" ausführen, wenn [Variable nicht existiert ODER Datei fehlt].
Sondern wirst ja auch in der Fehlermeldung/Fehlerbehandlung GENAU darauf Bezug nehmen, was nun das Problem ist ("Variable nicht definiert"/"Datei nicht gefunden")

Dem entsprechend käme in der Praxis auch wieder heraus.
if defined VAR01 if exist "%ANW_PFAD%\dateiname.bsp" (  
echo tuAllesPrimaPart
  ) else (
        if not exist "%ANW_PFAD%\dateiname.bsp" echo Datei nicht gefunden!  
        if not defined VAR01 echo variable VAR01 Datei nicht gesetzt!
        pause & goto :eof
)

Grüße
Biber
Member: pieh-ejdsch
pieh-ejdsch Feb 17, 2011 at 21:01:42 (UTC)
Goto Top
moin Biber,

ich hab ja auch grad meine Testwochen.
im zweiten wird doch Zeile 05 Niemals ge-echo-t. Die else Klausel bezieht sich doch nur auf die Zweite if Klausel.
oder wartes Du auf Feedback vom TO

Gruß Phil
Member: Biber
Biber Feb 18, 2011 at 08:23:03 (UTC)
Goto Top
Moin pieh-ejdsch,

jepp, hast Recht... ich habe mich auch blenden lassen von der optischen Ästhetik der Klammern.
Die spiegeln leider nicht die tatsächliche Struktur der Programmlogik wieder.

Besser (oder zumindest funktionierender) wäre vielleicht
if defined VAR01 if exist "%ANW_PFAD%\dateiname.bsp" goto :AllesPrima  

if not exist "%ANW_PFAD%\dateiname.bsp" echo Datei nicht gefunden!  
if not defined VAR01 echo variable VAR01 Datei nicht gesetzt!
 pause & goto :eof

:AllesPrima
::hier kann das Programm tun, was ein Programm halt tun muss

Grüße
Biber
Member: eccos01
eccos01 Feb 18, 2011 at 10:58:30 (UTC)
Goto Top
Zitat von @Biber:
Moin pieh-ejdsch,

jepp, hast Recht... ich habe mich auch blenden lassen von der optischen Ästhetik der Klammern.
Die spiegeln leider nicht die tatsächliche Struktur der Programmlogik wieder.

Besser (oder zumindest funktionierender) wäre vielleicht
> if defined VAR01 if exist "%ANW_PFAD%\dateiname.bsp" goto :AllesPrima  
> 
> if not exist "%ANW_PFAD%\dateiname.bsp" echo Datei nicht gefunden!  
> if not defined VAR01 echo variable VAR01 Datei nicht gesetzt!
>  pause & goto :eof
> 
> :AllesPrima
> ::hier kann das Programm tun, was ein Programm halt tun muss
> 

Grüße
Biber

Das echo sollte nur ein Beispiel sein. Letztendlich muß ich nicht unterscheiden sondern lasse nur eine bestimmte verarbeitung aus... setze also nur 2 delete-kommandos und ein goto dort rein.

Wäre es denn möglich sowas (als Negation mit ODER) zu realisieren?
Member: pieh-ejdsch
pieh-ejdsch Feb 18, 2011 at 12:09:26 (UTC)
Goto Top
Wäre es denn möglich sowas (als Negation mit ODER) zu realisieren?

Nein! Du kannst es mit if Probieren aber es wird nicht gehen, da if keinen Errorlevel ausgibt.
Der Befehl wird ja auf jedenfall ausgeführt.

was zum spielen:
if 0 == 1 echo Nein
echo %errorlevel%

(aus diesem und/oder anderen Gründen hab ich es auch noch nicht hinbekommen eine Ausgabe einer Batch in eine Eingabe einer anderen Batch zu bekommen!)

Gruß Phil