Windows Batch Variables Won’t Set

You missed something 😉

cmd expands variables when commands are parsed, not when they are run. It so happens that an if or for statement with a block ( ... ) (or actually any block) counts as a single command in that case. So when you set variables inside a block and try using them in the same block there are no variables anymore – they were replaced by the values the variables had before the block even executed.

Stick a

setlocal enabledelayedexpansion

at the start of your batch file and use !zip! instead of %zip%. See help set for a detailed discussion of the problem.

Leave a Comment