如何在Windows批处理文件中获取其余参数?

Lou*_*hys 9 windows batch-file

我知道我可以用%0得到第一个参数,用%1得到第二个,依此类推.我也可以用%*获得所有参数.

我可以从第二个参数得到所有参数吗?例如,如果我跑

foo.bat bar1 bar2 bar3 bar4
Run Code Online (Sandbox Code Playgroud)

我怎么才能得到bar2 bar3 bar4

Mag*_*goo 8

@ECHO OFF
SETLOCAL
SET allargs=%*
IF NOT DEFINED allargs echo no args provided&GOTO :EOF 
SET arg1=%1
CALL SET someargs=%%allargs:*%1=%%
ECHO allargs  %allargs%
ECHO arg1     %arg1%
ECHO someargs %someargs%
Run Code Online (Sandbox Code Playgroud)

这将留下SOMEARGS至少一个前导分隔符(如果已设置)


npo*_*aka 4

SHIFT命令。但每一次转变,你都会失去第一个。这不会改变,%*但您将能够获得所有参数,但第一个:

@echo off
shift

set "arg_line= "
:parse_args
if "%~1" NEQ "" (
 arg_line=%argline% "%~1"
 goto :parse_args
)
Run Code Online (Sandbox Code Playgroud)

现在你将拥有所有参数,但第一个参数存储在%arg_line%