Вы можете использовать
your.bat "bla="
------ your.bat ----
echo %~1
или также
your.bat bla=
------ your.bat ----
echo %*
Лучшее решение зависит от регистра.
Описание на
call /?
Обычно лучше заключать проблемные параметры в кавычки и удалять их позже с модификатором %~
.
set "param1=%~1"
использует тот факт, что %~1
удалит заключающие в кавычки, когда они существуют.
И кавычки вокруг "param1=%~1"
гарантируют, что специальные символы не будут давать ошибок.
call :myFunc "<Hard>=&|"
exit /b
:myFunc
setlocal EnableDelayedExpansion
set "param1=%~1"
echo(!param1!
exit /b
Но с кавычками внутри параметра проблемы все еще могут возникать.
call :myFunc "&"^&""