You can use /fill
twice in order to place snow on all blocks, then remove snow that is on the ground. (I'm trusting the examples on the wiki on this as I haven't tested this, but if the wiki is accurate this should work.
First, run this command. The coordinates should correspond to opposite corners of your forest, with a y level a couple blocks above the top of the trees. (The y levels should be equal to one another).
# This command adds a layer of snow in the air. In BE, snow is a gravity block, so snow will fall onto the trees or ground.
# Snow on the ground will be dealt with in the other command.
/fill <x y z: corner 1> <x y z: corner 2> minecraft:snow_layer
Then, stand on the ground level and run this command with the same x and z values as the first command, but use ~
instead of the y values.
# This is the part I'm not sure about.
# This command *should* replace all `snow_layer` blocks with air.
/fill <x> ~ <z> <x> ~ <z> air replace minecraft:snow_layer
These commands should work if there is flat terrain (as I assume there is because OP mentioned a superflat world).
/execute
. Or just turnrandomTickSpeed
very high and wait. Or try adjusting this to your needs. Slicedlime also has some custom snow logic in his seasons datapack, but that is quite complicated and needs quite a bit of performance.