¿Extraño comportamiento con caracteres especiales en argumentos de funciones por lotes?

Supongamos que correstest.bat "blabla,blabla,^>blabla", "blaby"

implementación de test.bat:

@SETLOCAL
@ECHO OFF
SET list=%~1
ECHO "LIST: %list%"
ECHO "ARG 1: %~1"
ECHO "ARG 2: %~2"
@ENDLOCAL   
@GOTO :EOF

La salida es la esperada:

"LIST: blabla,blabla,>blabla"
"ARG 1: blabla,blabla,^>blabla"
"ARG 2: blaby"

Pero, ¿qué pasa si realiza test.bat una función dentro de un archivo por lotes?

@SETLOCAL
CALL :TEST "blabla,blabla,^>blabla", "blaby"
@ENDLOCAL
@GOTO :EOF

:TEST
@SETLOCAL
@ECHO OFF
SET list=%~1
ECHO "LIST: %list%"
ECHO "ARG 1: %~1"
ECHO "ARG 2: %~2"
@ENDLOCAL   
@GOTO :EOF

Después de ejecutarlo la salida es:

"LIST: blabla,blabla,^"
"ARG 1: blabla,blabla,^^>blabla"
"ARG 2: blaby"

Eh

Donde hizoblabla entrar en la lista?ARG 1 tiene^^? ¿Por qué?

¿Puede alguien explicar cómo los caracteres especiales se comportan de manera diferente en los argumentos de función en lugar de los argumentos de línea de comando?

Respuestas a la pregunta(2)

Su respuesta a la pregunta