You're going to have to unhide the files anyway, because move won't work on a file that it can't find (even if you supply the full filename). There's no flag to give to move to get it to look for files tagged with the hidden attribute.
Unhide the files with attrib -h. Replace your
for line with this set :
for /f "delims=" %%f in ('dir /ad /b /s %root%') do (
@attrib -h "%%f\~$*.SLD*"
@move "%%f\~$*.SLD*" %dest%
You could use a more sophisticated tool, like xcopy or robocopy, that can operate on hidden files. Of course, these are copy tools, so you'll still have to unhide the original files and delete them after the copy finishes.