2011-11-18 15 views
5

/とバッチファイルを呼び出すときにトリガーされるアクションを追加する方法を知っていますか?引数?私はいつも-hを使って用途を表示しましたが、一度は-h argが必要です。/?バッチで切り替えますか?

編集:実は私はこの

for %%i in (%*) do .... 

しかし/などの属性を解析して試してみましたか?引数はスキップされましたが、私はあなたのソリューションを試して、それが違うかどうかを見ていきます。

Btwなぜ解析するか%i/? argsはスキップされますか?

答えて

6

/?は、単にfor %%i in (%*)でスキップしているようだが、それはforループのワイルドカードの機能ですが、それはそのファイルを見つけようとします一致すると/?が失敗します。

「通常の」for-loopには、結果を変更せずに?または*を使用することはできません。

SHIFTコマンドを使用して、すべてのパラメータにアクセスできます。

:parameterLoop 
if "%~1"=="/?" call :help 
if "%~1"=="-h" call :help 
if "%~1"=="-o" call :other 
shift 
if not "%~1"=="" goto :parameterLoop 

あなたはまた、選択したオプションを表示する場合、これは通常、代わりに/?のヘルプが表示されますよう、あなたは、echoコマンドでの問題を得ました。

echo %1の代わりにecho(%1を使用すると、これを回避できます。

+0

+1 '/ I'スイッチを' IF'コマンドに追加します。 –

+0

ありがとうございました:) – kitensei

3

コマンドライン引数(%1、%2など)を/?文字列の場合は、ECHOコマンドを使用してヘルプを表示します。例えば、

@ECHO OFF 
IF "%1"=="/?" (
    ECHO "Help Line 1" 
    ECHO "Help Line 2" 
) ELSE (
    ECHO "Do Your Action" 
) 
1

あなたはこの試みることができる:

@echo off 
if "%1"=="/?" goto print_help 
goto normal_start 

:print_help 
echo Here is your help 
goto end 

:normal_start 
echo I'm working 

:end 
関連する問題