我的脚本从表单的“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/