Странное поведение со специальными символами в аргументах пакетных функций?

Предположим, вы бежитеtest.bat "blabla,blabla,^>blabla", "blaby"

реализация test.bat:

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

Выход, как и ожидалось:

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

Но что, если вы сделаете test.bat функцией внутри командного файла:

@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

После его запуска получается:

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

А?

Где сделалblabla перейти в СПИСОК?ARG 1 имеет^^? Зачем?

Может кто-нибудь объяснить, как специальные символы ведут себя по-разному в аргументах функций в отличие от аргументов командной строки?

Ответы на вопрос(2)

Ваш ответ на вопрос