Я подозреваю, что проблема здесь в том, что оригинальный пакетный файл использует цикл for для
обрабатывать параметры командной строки, и знак вопроса используется для
расширение шаблона имени файла.
> type fortest.bat
@echo off
for %%a in (%*) do (
echo arg is %%a
)
> fortest a b c/?d
arg is a
arg is b
Использование позиционных параметров% 1 и% 2 позволяет избежать подстановочных знаков
сделано в цикле for ... (% *). Оператор смены избегает подстановочных знаков
расширение, если необходимо обработать неизвестное количество параметров.
> type shifttest.bat
@echo off
:loop
if "x%1" == "x" goto :eof
echo arg is %1
shift /1
goto :loop
> shifttest a b c/?d
arg is a
arg is b
arg is c/?d