Esta postagem do StackOverflow aborda como faça:
Arrastar & drop é mal implementado para arquivos em lote. Os nomes são citados, se houver espaço, mas não se um caractere especial for encontrado, como &,; ^
Para espaços apenas em seus nomes de arquivos, você precisa alterar seu código apenas um pouco.
@ECHO OFF
ECHO "%~1"
COPY "%~1" "%CD%\test\" /Y /S
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.zip" "test" -r
%~1
se expande sempre para uma versão sem aspas, por isso sempre pode citá-las de maneira segura.
"c:\Docs and sets" -> %~1 -> c:\Docs and sets -> "%~1" -> "c:\Docs and sets"
c:\Programs -> %~1 -> c:\Programs -> "%~1" -> "c:\Programs"