使用相同的一个bat文件调用ReadINI脚本

时间:2011-11-14 12:06:36

标签: batch-file ini

我只需要使用一个bat文件,所以我将脚本复制到我的bat文件中。 如何调用此脚本,并在局部变量中使用currval值?

@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

1 个答案:

答案 0 :(得分: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

也许这并不完美,因为它只需要一个结果,但我希望它指向正确的方向。