Batch file not getting the first 5 characters in drop file filename

IF you want to declare variables and use this same variables inside for loops or if's you have to use delayed Expansion ex:

SetLocal EnableDelayedExpansion

Also you have to substitute % by !

set "oldName=%%~nf"
set "newName=!oldName:~0,5!"
mkdir "%HOMEPATH%\Desktop\BACK-UP DATA\!newName!\COPY"