批处理:"%~1"有效,但"%〜*"是语法错误.我如何找到等效命令?

Mar*_*mbo 3 batch-file

批处理:"%~1"工作,但是"%~*"语法错误.

我如何找到等效命令?

Bla*_*ght 5

既然%*batch parameter is a wildcard reference to all the arguments not including %0,你不能使用~它,但你可以循环所有参数和%%~它们,例如:

for %%x in (%*) do (
    echo %%~x
)
Run Code Online (Sandbox Code Playgroud)

此外,如果您需要将它们组合成单个参数,您可以使用setlocal enabledelayedexpansion此循环:

setlocal enabledelayedexpansion
set args=
for %%x in (%*) do (
  set args=!args! %%~x
)
echo %args:~1%
Run Code Online (Sandbox Code Playgroud)

说明:

  1. !args! 是在使用时使用变量的另一种方法 setlocal enabledelayedexpansion
  2. %args:~1% 删除第一个空格.

这里是没有的例子setlocal enabledelayedexpansion,它不会吃掉!参数中的符号:

set args=
for %%x in (%*) do call :SETARGS %%x
GOTO :END
:SETARGS
set args=%args% %~1
:END
echo %args:~1%
Run Code Online (Sandbox Code Playgroud)