Batch file 如何迭代ogr2ogr批处理文件中的2组FOR

Batch file 如何迭代ogr2ogr批处理文件中的2组FOR,batch-file,gdal,ogr2ogr,Batch File,Gdal,Ogr2ogr,我对使用批处理文件是相当陌生的。我试图看看是否有可能同时运行两个不同的循环,以获得ogr2ogr中的导出(postresql到geopackage、geojson等) 我在计算1个循环时没有问题 For %%x IN (a,b,c) DO ogr2ogr -f "gpkg" C:\results\%%x_1.gpkg PG:"host=localhost user=user1 dbname=testdb password=admin" -sql "

我对使用批处理文件是相当陌生的。我试图看看是否有可能同时运行两个不同的循环,以获得ogr2ogr中的导出(postresql到geopackage、geojson等)

我在计算1个循环时没有问题

For %%x IN (a,b,c) DO ogr2ogr -f "gpkg" C:\results\%%x_1.gpkg PG:"host=localhost
user=user1 dbname=testdb password=admin" -sql "SELECT * FROM %%x  WHERE columnx = '1'"
我试图弄清楚是否可以得到另一个循环,在这个循环中,我可以从select查询中遍历columnx。ie(1,2,3)。所以我上面的例子可以生成9个地质包a_1,a_2,a_3,b_1,b_2,b_3,c_1,c_2,c_3

可能是这样的,但当然不行

For %%x IN (a,b,c) & FOR %%y IN (1,2,3) DO ogr2ogr -f "gpkg" C:\results\%%x_1.gpkg 
PG:"host=localhost user=user1 dbname=testdb password=admin" -sql "SELECT * 
FROM %%x  WHERE columnx = '%%y'"

不确定这是否可能?任何建议都很好。

符号是在上一个命令完成后运行命令的机制。
FOR
命令始终需要相应的
DO
。这在命令的帮助语法用法中非常清楚

理论上,您可以将所有这些代码放在一行中,但这使得它非常不可读,因此最好使用括号来创建命令块,就像您在以前的批处理文件中所显示的那样

“它不工作”是最糟糕的错误描述,所以请准确;你到底想要什么,你到底得到了什么?请咨询…
For %%x IN (a,b,c) DO (
    FOR %%y IN (1,2,3) DO (
        ogr2ogr -f "gpkg" C:\results\%%x_1.gpkg PG:"host=localhost user=user1 dbname=testdb password=admin" -sql "SELECT * FROM %%x  WHERE columnx = '%%y'"
    )
)