Ok, I'm getting crazy and I don't know what else to do, I've tried several things and nothing is working.
Look at this sample code (test.cmd):
setlocal enabledelayedexpansion enableextensions
set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "%VAR%" == "after" @echo If you see this, it worked
)
This is the generated output:
D:\>ver
Microsoft Windows [Version 6.1.7600]
D:\>test.cmd
D:\>setlocal enabledelayedexpansion enableextensions
D:\>set VAR=before
D:\>if "before" == "before" (
set VAR=after;
if "before" == "after"
)
D:\>
Am I doing something wrong?
This is just a test, the code I need uses variables too and needs delayed expansion, but it this simple test doesn't work the other wont work either (I've tried, I ended up with a simple example to test if it worked).
EDIT: New code and output:
test.cmd:
@echo off
setlocal enabledelayedexpansion enableextensions
set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "!VAR!" == "after" (
echo It worked.
) else (
echo It didn't work.
)
)
Output:
D:\>test.cmd
It didn't work.
D:\>
At the beginning of the cmd prompt, you must type “CMD /V” OR “CMD /V:ON”
After this testing code should work
SETLOCAL EnableDelayedExpansion
Set "_var=first"
Set "_var=second" & Echo %_var% !_var!
You should be able to see output “first second”
You have to use !var!
for delayed expansion. %var%
is always expanded on parse stage.
I.e., change your code to
setlocal enabledelayedexpansion enableextensions
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With