Как сдвинуть все параметры в пакете

Хорошо известный shift Команда может использоваться для сдвига позиционных параметров в пакетном файле, НО это не влияет на специальную переменную %*,

Команда сдвига не влияет на пакетный параметр%*.

Есть ли альтернатива сдвигу ?

1 ответ

К сожалению, нет, нет встроенного синтаксиса, чтобы делать то, что вы хотите. Лучшее, что вы можете сделать, это использовать цикл для создания переменной, содержащей желаемый список параметров. Каждая итерация добавляет %1 к списку, а затем сдвигается. Цикл продолжается до тех пор, пока не останется больше параметров.

Это будет работать, только если параметры не содержат ядовитых символов без кавычек.

@echo off

shift /1
shift /1

set "remainingArgs="
:getRemainingArgs
if "%~1" neq "" (
  set ^"remainingArgs=%remainingArgs% %1"
  shift /1
  goto :getRemainingArgs
)
echo remainingArgs=%remainingArgs%
Другие вопросы по тегам