Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取windows批处理文件中的其余参数?_Windows_Batch File - Fatal编程技术网

如何获取windows批处理文件中的其余参数?

如何获取windows批处理文件中的其余参数?,windows,batch-file,Windows,Batch File,我知道我可以用%0获取第一个参数,用%1获取第二个参数,依此类推。。我还可以用%*获取所有参数 我可以从第二个参数中获取所有参数吗?例如,如果我跑步 foo.bat bar1 bar2 bar3 bar4 如何仅使用SHIFT命令获取bar2 bar3 bar4?。但每次轮班你都会失去第一个。 这不会更改%*,但您可以获取所有参数,但第一个参数除外: @echo off shift set "arg_line= " :parse_args if "%~1" NEQ "" ( arg_lin

我知道我可以用%0获取第一个参数,用%1获取第二个参数,依此类推。。我还可以用%*获取所有参数

我可以从第二个参数中获取所有参数吗?例如,如果我跑步

foo.bat bar1 bar2 bar3 bar4

如何仅使用
SHIFT
命令获取
bar2 bar3 bar4

。但每次轮班你都会失去第一个。 这不会更改
%*
,但您可以获取所有参数,但第一个参数除外:

@echo off
shift

set "arg_line= "
:parse_args
if "%~1" NEQ "" (
 arg_line=%argline% "%~1"
 goto :parse_args
)

现在,除了第一个参数外,所有参数都存储在
%arg\u line%
中。您需要使用
SHIFT
。它移动参数的表观位置,然后
%*
将获得从位置移动到的所有参数。您应该在使用
SHIFT
之前获取第一个参数

@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%
打开
SHIFT

@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%

这将使
SOMEARGS
至少有一个前导分隔符(如果设置了)

很好,但您的意思是
echo
(在第四行)?@user2033427是-修复了。这是错误的,
SHIFT
只影响
%0、%1、%2…%9
但不是
%*