Batchdatei: Umgebungsvariable „if“ Zeichenfolgentest

Batchdatei: Umgebungsvariable „if“ Zeichenfolgentest

In einer Batchdatei rufe ich eine andere Batchdatei auf, um eine Reihe von Datumsumgebungsvariablen festzulegen.

Die Datenvariablen sind richtig eingestellt und ich kann sie aufrufen.

In diesem Fall muss ich jedoch zwei dieser Umgebungsvariablen vergleichen und feststellen, ob sie gleich sind, um den Rest des Stapels bedingt zu starten (oder zum Ende/Beenden zu springen).

Allerdings gelingt es mir nicht, die Bedingung zum Ausführen des Tests (Vergleichs) der beiden Umgebungsvariablen zu erfüllen.

Diese sind definiert als %today2% (heutiges Datum, festgelegt als MMTTJJ) und %firstmonday%, was ein berechneter erster Montag im Monat ist und als MMJJTT festgelegt ist. Wenn diese heute (14. Oktober 2015) ausgeführt werden, geben sie 101415 und 110215 zurück.

Diese versuche ich dann folgendermaßen zu testen:

if %today2%==%firstmonday% goto GO else END

Der Test scheint jedoch völlig ignoriert zu werden – der Test wird ungeachtet dessen immer mit GO fortgesetzt.

Wenn „i“ echo %today%und „i %firstmonday%“ sind, sind sie natürlich unterschiedlich, aber irgendwie wird der Test als „true“ ausgewertet und ausgeführt.

Wenn ich mich nicht klar ausdrücke, lassen Sie es mich bitte wissen und ich werde versuchen, es besser zu machen. Ich bin auf diesem Gebiet eher ein Neuling, habe aber schon eine Weile damit herumgespielt und kann den logischen Fehler einfach nicht erkennen.

Antwort1

Ich habe zwei Batchdateien erstellt: b1.cmdund b2.cmddie folgenden. Die erste b2.cmdlegt Ihre Variablen wie beschrieben fest:

set today2=101415
set firstmonday=110215

Dann b1.cmdfunktioniert es wie gewünscht:

@echo off
call b2.cmd
echo today=%today2%
echo firstmonday=%firstmonday%
if "%today2%"=="%firstmonday%" (
    goto go
) else (
    goto end
)
:go
echo at go
goto :EOF
:end
echo at end

verwandte Informationen