我有以下目录结构:Windows批处理:如何编写一个嵌套for循环?
WebERP
--DDL
--file1.sql
--file2.sql
--DML
--file1.sql
--file2.sql
WebERP_Finance
--DDL
--file1.sql
--file2.sql
--DML
--file1.sql
--file2.sql
.
.
.
file7.sql
file9.sql
下DML的文件,现在DDL文件夹被称为fileN.sql但在未来他们的名字会有所不同。
我想遍历所有以“WebER *”开头的文件夹,并使用DDL和DML文件夹下的每个sql文件运行一个命令,但我不希望该命令在file7上运行。 sql和file9.sql。
我试着做一些嵌套for循环,但无济于事。
这是我已经试过:
for /d %%R in (WebER*) do (
for /r %%F (*.sql) do
java -jar %liquibasejar% --changeLogFile=%workspace%\\SQL_Changes\\%%R\\DDL\\%%F update
)
我得到的错误是:r was unexpected at this time.
编辑#1: 当此阶段运行:
stage ('Run SQL scripts') {
bat """
set liquibasejar="c:\\Program Files (x86)\\LiquiBase\\liquibase.jar"
set sqljdbc="C:\\Program Files (x86)\\liquibase\\sqljdbc.jar"
set url="jdbc:sqlserver://localhost:1433;databaseName"
set driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
cd %WORKSPACE%\\SQL_Changes
for /d %%R in (WebER*) do (
for /r "%%R" %%F in (*.sql) do (
echo "F: %%F"
java -jar %liquibasejar% --classpath=%sqljdbc% --url=%url%=%%R --driver=%driver% --username=%sql_user% --password=%sql_passwd% --changeLogFile=%workspace%\\SQL_Changes\\%%R\\DDL\\%%F update
java -jar %liquibasejar% --classpath=%sqljdbc% --url=%url%=%%R --driver=%driver% --username=%sql_user% --password=%sql_passwd% --changeLogFile=%workspace%\\SQL_Changes\\%%R\\DML\\%%F update
)
)
"""
}
这詹金斯的产品:
c:\jenkins\workspace\Ensure_database_mgmt\SQL_Changes>(for /R "%R" %F in (*.sql) do (
echo "F: %F"
java -jar "c:\Program Files (x86)\LiquiBase\liquibase.jar" --classpath="C:\Program Files (x86)\liquibase\sqljdbc.jar" --url="jdbc:sqlserver://localhost:1433;databaseName"=WebERP_Finance --driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" --username=**** --password=**** --changeLogFile=c:\jenkins\workspace\Ensure_database_mgmt\SQL_Changes\WebERP_Finance\DDL\%F update
java -jar "c:\Program Files (x86)\LiquiBase\liquibase.jar" --classpath="C:\Program Files (x86)\liquibase\sqljdbc.jar" --url="jdbc:sqlserver://localhost:1433;databaseName"=WebERP_Finance --driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" --username=**** --password=**** --changeLogFile=c:\jenkins\workspace\Ensure_database_mgmt\SQL_Changes\WebERP_Finance\DML\%F update
))
[Pipeline] }
[Pipeline] // stage
你可以看到最后一个“%% F”没有正确的翻译......任何想法为什么?
[这个问题](https://stackoverflow.com/questions/43945084/deleting-folders-recursively-using-windows-batch-script/43945671)似乎有一定的相似之处,可能会对你有所帮助。 –