2013-05-03 10 views
6

%0で最初の引数を得ることができ、%2で2番目の引数を得ることができることは分かります。また、すべての引数を%*で取得することもできます。Windowsのバッチファイルの残りの引数を取得するには?

2番目の引数からすべての引数を取得できますか?たとえば、私が実行した場合

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 informationSHIFTである。

+3

(それが設定されている場合)は、少なくとも一つの有力セパレータSOMEARGSを残して...%9'が、 '%*'ではありません – jeb

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% 

これは、 `SHIFT`のみ`%0、%1、%2に影響を与え、間違っている

+0

いいですが、 'echo'(4行目)を意味しましたか? – user2033427

+0

@ user2033427ええ - 修正済み。 – Magoo

関連する問題