Question

@echo off
pushd

setlocal enabledelayedexpansion enableextensions

set VARY=before
if "!VARY!" == "before" (
set VARY=2    
if "!VARY!" == "2" @echo If you see this, yes echo !VARY!
)


set VAR=before
if "!VAR!" == "before" (
set VAR=1
if "!VAR!" == "1" @echo If you see this, it worked
)

popd

Expected Output:
If you see this, yes 2
If you see this, it worked

Actual Output:
If you see this, it worked

Can someone explain why is the output not showing "If you see this, yes 2" as well?

Was it helpful?

Solution

You have trailing spaces after the 2, so compare if "2 " == "2" (not equal).

To avoid this use the following code:

set "VARY=before"
if "!VARY!" == "before" (
set  "VARY=2"
if "!VARY!"=="2" echo If you see this, yes echo !VARY!
)

.. and if you set numbers, you can also use "set /a":

set "VARY=before"
if "!VARY!" == "before" (
set /a VARY=2
if "!VARY!"=="2" echo If you see this, yes echo !VARY!
)

OTHER TIPS

It's simple. The first time you set VARY to 2 instead of 2.

To avoid this use ALWAYS the syntax set "VARY=2"

This syntax only takes the input from the first to the last quote, all characters after the last quote are dropped.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top