У меня есть следующий код:Отправка параметры, имеющие специальные символы в другой пакетный файл из пакетного файла
second.bat
файл
echo %~1
echo %~2
first.bat
файл
@ECHO OFF &SETLOCAL
@SETLOCAL EnableExtensions EnableDelayedExpansion
set /p User=Enter Username:
set /p Password=Enter Password:
call second.bat %User% %Password%
Если пользователь входы Admin
как имя пользователя ив качестве пароля выход производится в second.bat
эхо, как показано ниже:
Admin Admin23
Как я могу получить специальные символы, а также в second.bat
файл, как показано ниже?
Admin Admin!23
Ваша 'call'ed-процедура наследует как переменные, так и' расширение', поэтому во второй подпрограмме вы можете просто «установить пользователя» и «установить пароль», чтобы увидеть фактические значения. Если вы измените эти значения во второй подпрограмме, измененное значение будет возвращено вызывающей процедуре. Поскольку 'delayedexpansion' действует, простое' echo' будет пытаться расширить свой аргумент в соответствии с обычными правилами. Чтобы использовать '!', Вам нужно отключить 'delayedexpansion' - до вызова второй подпрограммы или во второй подпрограмме. – Magoo