set / p con espacios en valor variable

Quería hacer un editor de texto básico por lotes y estoy usando set / p para obtener la entrada del usuario y escribirlo en un archivo.

Cuando escribo algo como "hola" o "hola" funciona bien, pero tan pronto como escribo algo con un espacio y otro carácter después de eso, como "hola mundo", la ventana se cierra.

Mi código fue:

set /p append=Write what you want to append: 

Entonces intenté:

set /p "append=Write what you want to append: "

que encontré en línea, pero no funcionó.

pausa no es de ninguna ayuda porque el programa se bloquea tan pronto como presiono enter.

¡Ayuda!

Aquí está el código completo:

:append
set /p "append=Write what you want to append: "
if %append%==return (
    cls
    goto start
)
echo %append% >> %filename%
goto append

:override
cls
echo Name: %filename%
set /p override="Write new content: "
echo %override% > %filename%
pause
cls
goto start

:writefile
echo.
set /p filename=Write file name.extension: 
choice /c AO /m "Append to file or override? "
if %ERRORLEVEL%==1 (
    cls
    echo Name: %filename%
    goto append
) else (
    goto override
)

Respuestas a la pregunta(3)

Su respuesta a la pregunta