2011-11-14 36 views
0

我只需要使用一個bat文件,因此我將腳本複製到了我的bat文件中。 我怎樣才能調用這個腳本,並在本地變量中使用currval值?使用同一個bat文件調用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調用它,但由於批處理函數沒有返回值,因此需要通過將結果賦值給變量來明確地執行此操作。

你的情況,你的代碼看起來是這樣的

@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 

也許這並不完全適合,因爲只需要一個結果,但我希望它指向到正確的方向。

相關問題