I had a problem with set
not working in a batch file; it took a while to distil the problem; at first I thought it was to do with subroutine calls...
The sc
What's happening is that the batch interpreter as treating everything in between the brackets a single line. This means it's doing variable replacement on everything betweeen the brackets before any of the commands are run.
So:
(
set b=bbb
echo b = "%b%"
)
Becomes:
(
set b=bbb
echo b = ""
)
The variable b is being set but obviously isn't set before you run the SET
command.