2013-02-28 2 views
7

私はディレクトリで動くバッチスクリプトを書いています。私は、スクリプトが単一のディレクトリの代わりにフォルダツリーを実行させるようなフラグ(-rや/ rまたはそのようなものなど)を追加できるようにしたい。バッチを使用してフラグオプションを追加することは可能ですか?バッチスクリプトにフラグを追加する

ありがとうございます。

+1

プラットフォームしてください? – user1428716

+0

[コマンドラインパラメータ](http://www.robvanderwoude.com/parameters.php) [Googling this](http://goo.gl/e6Kc9)を気にしましたか? – rojo

+1

[Windows Bat file optional argument parsing]の複製が可能です(http://stackoverflow.com/questions/3973824/windows-bat-file-optional-argument-parsing) –

答えて

12

確かに可能です。コマンドラインパラメータ(%0は、バッチファイルの名前です。)などが%1、%2、としてあなたのバッチファイルに渡され

IF "%1"=="/r" ECHO You passed the /r flag. 

使用SHIFT最初の引数を削除し、他のすべてを移動します1つずつ/ rをコマンドラインのどこにでも置くことができるようにするには、これを少し好きにするために使うことができます。たとえば、次のように

:processargs 
SET ARG=%1 
IF DEFINED ARG (
    IF "%ARG%"=="/r" ECHO You passed the /r flag. 
    SHIFT 
    GOTO processargs 
) 

または使用%*このようなFORループで(引数リスト全体に展開する):

FOR %%A IN (%*) DO (
    IF "%%A"=="/r" ECHO You passed the /r flag. 
) 
+2

また、引数を '%*'として処理することもできます。 'for'ループです。 [例](http://stackoverflow.com/a/15002975/1683264) – rojo

+0

良い点@rojo。私は私の答えを更新しました。 –

+0

なぜ 'IF NOT'ではなく 'SET ARG =%1'、' IF DEFINED ARG'%1 '==' ''? – Sinjai

関連する問題