2011-11-14 7 views
0

バットファイルを1つだけ使用する必要があるため、スクリプトを自分のbatファイルにコピーしました。 このスクリプトをどのように呼び出すことができ、ローカル変数にcurrval値を使用できますか?同じ1つのバットファイルを使用してReadINIスクリプトを呼び出します。

@setlocal enableextensions enabledelayedexpansion 
@echo off 
set file=%1 
set area=[%2] 
set key=%3 
set currarea= 
for /f "delims=" %%a in (!file!) do (
    set ln=%%a 
    if "x!ln:~0,1!"=="x[" (
     set currarea=!ln! 
    ) else (
     for /f "tokens=1,2 delims==" %%b in ("!ln!") do (
      set currkey=%%b 
      set currval=%%c 
      if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" (
       echo !currval! 
      ) 
     ) 
    ) 
) 
endlocal 

答えて

2

あなたが機能を検索しているとします。

これをバッチファイルに貼り付けてcall :myFunction経由で呼び出すことはできますが、バッチ関数は値を返さないため、結果を変数に代入することで明示的に行う必要があります。

あなたのケースでは、あなたのコードは、おそらくそれは1つの結果だけをとるよう、これは、完璧にフィットしませんが、私はそれが正しい方向にポイントを願ってこの

@echo off 
setlocal enableextensions enabledelayedexpansion 
call :myFunction %1 %2 %3 
echo !result! 
exit /b 

:myFunction 
set file=%1 
set area=[%2] 
set key=%3 
set currarea= 
for /f "delims=" %%a in (!file!) do (
    set ln=%%a 
    if "x!ln:~0,1!"=="x[" (
     set currarea=!ln! 
    ) else (
     for /f "tokens=1,2 delims==" %%b in ("!ln!") do (
      set currkey=%%b 
      set currval=%%c 
      if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" (
       set result=!currval! 
      ) 
     ) 
    ) 
) 
exit /b 

ようになります。

関連する問題