Es una muy buena opción, sólo añadir que la última línea tendría que ir al principio, si no existe, que no siga leyendo.
Sobra un @echo off, con el del principio es suficiente.
Algo así como
@echo off
if "%1"=="" goto ERROR1
if not exist %1\NUL then goto ERROR2
goto NEXT
:ERROR1
echo Error, no ha introducido ningún parámetro
goto END
:ERROR2
echo Error, el directorio introducido como parámetro es incorrecto
goto END
:NEXT
for %%q in (%1) do del %%q
for %%q in (%1) do deltree %%q
rem Primero he eliminado los archivos
rem Después he eliminado los directorios y los archivos y subdirectorios contenidos en esos directorios
rem manteniendo en todo momento el padre
:END
No creo que funcione ni de coña, sería cuestión de cambar alguna cosa.
Espero que con estas respuestas te estemos ayudando a hacer un proyecto propio crackman, y no a responder algun ejercicio de tu academia, centro educativo, facultad...