%0で最初の引数を得ることができ、%2で2番目の引数を得ることができることは分かります。また、すべての引数を%*で取得することもできます。Windowsのバッチファイルの残りの引数を取得するには?
2番目の引数からすべての引数を取得できますか?たとえば、私が実行した場合
foo.bat bar1 bar2 bar3 bar4
bar2 bar3 bar4
はどうすれば入手できますか?
%0で最初の引数を得ることができ、%2で2番目の引数を得ることができることは分かります。また、すべての引数を%*で取得することもできます。Windowsのバッチファイルの残りの引数を取得するには?
2番目の引数からすべての引数を取得できますか?たとえば、私が実行した場合
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 informationSHIFT
である。
@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に影響を与え、間違っている
いいですが、 'echo'(4行目)を意味しましたか? – user2033427
@ user2033427ええ - 修正済み。 – Magoo
(それが設定されている場合)は、少なくとも一つの有力セパレータ
SOMEARGS
を残して...%9'が、 '%*'ではありません – jeb