Не было бы замечательно, если бы CMD.EXE работал таким образом! К сожалению, нет хорошего синтаксиса, который будет делать то, что вы хотите. Лучшее, что вы можете сделать, - это самостоятельно проанализировать командную строку и создать новый список аргументов.
Нечто подобное может работать.
@echo off
setlocal
echo %*
shift
set "args="
:parse
if "%~1" neq "" (
set args=%args% %1
shift
goto :parse
)
if defined args set args=%args:~1%
echo(%args%
Но вышеописанное имеет проблемы, если аргумент содержит специальные символы, такие как ^
, &
, >
, <
, |
, которые были экранированы вместо кавычек.
Обработка аргументов является одним из многих слабых сторон пакетного программирования Windows. Практически для каждого решения существует исключение, которое вызывает проблемы.