Comportamento estranho com caracteres especiais em argumentos de funções em lote?
Suponha que você executetest.bat "blabla,blabla,^>blabla", "blaby"
implementação test.bat:
@SETLOCAL
@ECHO OFF
SET list=%~1
ECHO "LIST: %list%"
ECHO "ARG 1: %~1"
ECHO "ARG 2: %~2"
@ENDLOCAL
@GOTO :EOF
A saída é conforme esperado:
"LIST: blabla,blabla,>blabla"
"ARG 1: blabla,blabla,^>blabla"
"ARG 2: blaby"
Mas e se você fizer test.bat uma função dentro de um arquivo de lote:
@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
Depois de executá-lo, a saída é:
"LIST: blabla,blabla,^"
"ARG 1: blabla,blabla,^^>blabla"
"ARG 2: blaby"
Hã?
Onde fezblabla
ir na lista?ARG 1 tem^^
? Por quê?Alguém pode explicar como os caracteres especiais se comportam de maneira diferente nos argumentos da função, em oposição aos argumentos da linha de comando?