Поскольку %*
это batch parameter is a wildcard reference to all the arguments not including %0
, вы не можете использовать ~
для него, но вы можете использовать цикл для всех аргументов и %%~
их, например:
for %%x in (%*) do (
echo %%~x
)
Также есливам нужно объединить их в один аргумент, который вы можете использовать setlocal enabledelayedexpansion
с этим циклом:
setlocal enabledelayedexpansion
set args=
for %%x in (%*) do (
set args=!args! %%~x
)
echo %args:~1%
объяснение:
!args!
- это еще один способ использования переменной при использовании setlocal enabledelayedexpansion
%args:~1%
удалить первый пробел.
А вот пример без setlocal enabledelayedexpansion
, который не принимает !
символов из аргументов:
set args=
for %%x in (%*) do call :SETARGS %%x
GOTO :END
:SETARGS
set args=%args% %~1
:END
echo %args:~1%