我知道我可以用%0得到第一個參數,用%1得到第二個參數,依此類推。我也可以用%*得到所有參數。如何在windows批處理文件中獲取其餘參數?
我可以從第二個參數中獲取所有參數嗎?例如,如果我跑
foo.bat bar1 bar2 bar3 bar4
如何我只得到bar2 bar3 bar4
?
我知道我可以用%0得到第一個參數,用%1得到第二個參數,依此類推。我也可以用%*得到所有參數。如何在windows批處理文件中獲取其餘參數?
我可以從第二個參數中獲取所有參數嗎?例如,如果我跑
foo.bat bar1 bar2 bar3 bar4
如何我只得到bar2 bar3 bar4
?
用SHIFT
命令。但是每次換班都會失去第一名。 這不會改變%*
但你能得到的所有說法,但第一:
@echo off
shift
set "arg_line= "
:parse_args
if "%~1" NEQ "" (
arg_line=%argline% "%~1"
goto :parse_args
)
現在你擁有的所有參數,但首先存儲在%arg_line%
您需要使用SHIFT
。它移動參數的表觀位置,然後%*
將從位置移動到所有參數。在使用SHIFT
之前,您應該先獲取第一個參數。
More information on 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
與至少一個領先的分離器(如果它設置)
不錯,但是你的意思是'回聲'(在第四行)? – user2033427 2013-05-03 14:15:40
@ user2033427是的 - 修復。 – Magoo 2013-05-03 14:25:15
這是錯的,'SHIFT'隻影響'%0%1%2 ...%9'但不是'%*' – jeb 2013-05-03 16:05:25