It is impossible to do what you want using just the
RENAME command - it simply does not have a mechanism to prepend a value to an existing name when you use wildcards. Any characters in your target name will replace characters in the source name, up to the first
I can't blame you for not understanding, because the Windows documentation is horrible for this command. I had never seen anything written anywhere that describes the rules. That is why I investigated and wrote How does the Windows RENAME command interpret wildcards?.
The batch solution for prepending text to an existing name is to use a FOR loop to rename each file individually. Something like the following should work for you.
for %%F in ("%folder2%*.PNG") do rename "%%F" "DONE-%%~F"
Another option is to use a 3rd party utility that is more powerful than the native
RENAME command. If you are comfortable with regular expressions, then one option is my JREN.BAT rename utility. It is pure script (hybrid JScript/batch) that runs natively on any Windows machine from XP onward - no 3rd party exe file needed. Once you have a copy, help is available from the command line via
jren /?, or
jren /?? for paged help.
With JREN.BAT, the solution is as simple as
jren "^" "DONE-" /p "%folder2%" /fm *.png. If you put the command in a batch script you need to use
call jren so that it will return to your script.