batch-file - Batch 中嵌套 for 循环。出现错误,但不确定原因

标签 batch-file for-loop nested-loops

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

property1=value11,value12,...,value1n
property2=value21,value22,...,value2n
.
.
.
propertym=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]

我从中得到的错误消息是

( was unexpected at this time.

该脚本以前一次只能处理一个模式(在我添加两个 for 循环之前),因此问题要么是我如何设置 for 循环,要么是与 for 循环和前一个循环发生冲突。代码。我在之前的工作脚本中添加的只是两个 FOR 语句和 SET 语句。

我已经找了几个人查看过,但没有人能够发现问题所在。这里有什么想法吗?

谢谢

最佳答案

问题出在线路上

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

关于batch-file - Batch 中嵌套 for 循环。出现错误,但不确定原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11686098/

相关文章:

在for循环中具有三个值的Python dict

c - 用 C++ 编写此字母模式的程序

java - 为什么 switch 语句无法按需要打印字符串? ( java )

batch-file - 批处理文件复制,使用%1进行拖放

C++ 相当于 .ToString()

R 循环数据帧列中的唯一值以根据条件创建另一个值

PHP 嵌套循环行为异常

java - Java 中的批处理文件进程被终止 : xcopy does not close

windows - 无法将 FOR 循环的输出分配给批处理文件中的另一个变量

batch-file - 为什么从 jenkins 运行批处理文件比直接运行批处理文件花费更多时间