2013-05-03 90 views
6

我知道我可以用%0得到第一個參數,用%1得到第二個參數,依此類推。我也可以用%*得到所有參數。如何在windows批處理文件中獲取其餘參數?

我可以從第二個參數中獲取所有參數嗎?例如,如果我跑

foo.bat bar1 bar2 bar3 bar4 

如何我只得到bar2 bar3 bar4

回答

3

SHIFT命令。但是每次換班都會失去第一名。 這不會改變%*但你能得到的所有說法,但第一:

@echo off 
shift 

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

現在你擁有的所有參數,但首先存儲在%arg_line%

0

您需要使用SHIFT。它移動參數的表觀位置,然後%*將從位置移動到所有參數。在使用SHIFT之前,您應該先獲取第一個參數。

More information on SHIFT

+3

這是錯的,'SHIFT'隻影響'%0%1%2 ...%9'但不是'%*' – jeb 2013-05-03 16:05:25

6
@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與至少一個領先的分離器(如果它設置)

+0

不錯,但是你的意思是'回聲'(在第四行)? – user2033427 2013-05-03 14:15:40

+0

@ user2033427是的 - 修復。 – Magoo 2013-05-03 14:25:15

相關問題