¿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?