无法从内部回声循环



i具有以下代码,该代码试图制作一个带有所有不同值的插入的SQL文件,该插入在可变BR中被逗号分开。我能够访问BR中的所有值以进行循环,但是当我尝试回荡整个语句时,它会失败。

有帮助吗?

@echo off
set /p uid="USER ID = "
set /p aname="APPL NAME = "
set /p rname="ROLE NAME = "
set /p cid="COMPANY ID = "
set /p br="BR = "
echo INSERT INTO USER_AUTH_BRANCH (USER_ID,APPL_NAME,ROLE_NAME,COMPANY_ID,BR) VALUES ('%uid%','%aname%','%rname%','%cid%',%%~a); > test1.sql
for %%a in ("%br:,=" "%") do (
echo INSERT INTO USER_AUTH_BRANCH (USER_ID,APPL_NAME,ROLE_NAME,COMPANY_ID,BR) VALUES ('%uid%','%aname%','%rname%','%cid%',%%~a); > test2.sql
)

您必须逃脱括号:

@echo off
set /p uid="USER ID = "
set /p aname="APPL NAME = "
set /p rname="ROLE NAME = "
set /p cid="COMPANY ID = "
set /p br="BR = "
echo INSERT INTO USER_AUTH_BRANCH (USER_ID,APPL_NAME,ROLE_NAME,COMPANY_ID,BR) VALUES ('%uid%','%aname%','%rname%','%cid%',%%~a); > test1.sql
for %%a in ("%br:,=" "%") do (
echo INSERT INTO USER_AUTH_BRANCH ^(USER_ID,APPL_NAME,ROLE_NAME,COMPANY_ID,BR^) VALUES ^('%uid%','%aname%','%rname%','%cid%',%%~a^); > test2.sql
)

这是问题:

for %%a in ("%br:,=" "%") do (
echo INSERT INTO USER_AUTH_BRANCH (USER_ID,APPL_NAME,ROLE_NAME,COMPANY_ID,BR)

...BR之后的)被解释为DO ()块的关闭支架。这就是为什么您必须逃脱它才能清楚地表明它实际上是字符串的一部分。

最新更新