2

我的脚本从表单的“settings.txt”文件中调用信息

property1=value11,value12,...,value1n
property2=value21,value22,...,value2n

.
.
属性m=valuem1,valuem2,...,valuemn

为了将“n”个模式添加到数据库中,使用格式为“setup.txt”的文件

2
3
.
.
.
n+1

指定要添加的架构。遍历每个模式的“for”循环是

FOR /F %%T IN (setup.txt) DO ( 
    SET position=%%T        
    FOR /F "tokens=1,!position!, delims==," %%A IN (settings.txt) DO (
        IF "%%A"=="property1" (
            SET %%A="%%B"
        )
[The code then continues to go through capturing the rest of the variables, and
then executes the relevant SQL commands]

我从中得到的错误信息是

(此时出乎意料。

该脚本以前一次只使用一个模式(在我添加两个 for 循环之前),所以问题在于我如何设置 for 循环,或者与 for 循环和之前的代码有冲突。我添加到之前工作脚本中的只是两个 FOR 语句和 SET 语句。

我找了几个人看了,都没有找到问题所在。这里有什么想法吗?

谢谢

4

1 回答 1

2

问题是线路

FOR /F "tokens=1,!position!, ...

您不能在 FOR/f 选项中使用延迟扩展,因为 FOR 命令有它自己的解析器,它不能以这种方式扩展选项。

但是您可以将其移至函数并使用百分比扩展

FOR /F %%T IN (setup.txt) DO ( 
    call :myFunc %%T
)
:exit /b

:myFunc
FOR /F "tokens=1,%1, delims==," %%A IN (settings.txt) DO (
    IF "%%A"=="property1" (
        SET %%A="%%B"
    )
)
exit /b
于 2012-07-27T11:52:32.683 回答