这个批处理文件只有一行会运行
gdal_merge -o C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_merged.tif -seperate -q -v C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_merged.tif C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_nn10.tif C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_nn20.tif
gdal_merge -o C:\test\RasterMerge\p024r027\p024r027_7t19990828_z16_merged.tif -seperate -q -v C:\test\RasterMerge\p024r027\p024r027_7t19990828_z16_nn10.tif C:\test\RasterMerge\p024r027\p024r027_7t19990828_z16_nn20.tif
gdal_merge -o C:\test\RasterMerge\p024r027\p023r026\p023r026_7t20001010_z16_merged.tif -seperate -q -v C:\test\RasterMerge\p024r027\p023r026\p023r026_7t20001010_z16_nn10.tif C:\test\RasterMerge\p024r027\p023r026\p023r026_7t20001010_z16_nn20.tif
gdal_merge -o C:\test\RasterMerge\p024r027\p024r026\p024r026_7t20000729_z16_merged.tif -seperate -q -v C:\test\RasterMerge\p024r027\p024r026\p024r026_7t20000729_z16_nn10.tif C:\test\RasterMerge\p024r027\p024r026\p024r026_7t20000729_z16_nn20.tif
gdal_merge -o C:\test\RasterMerge\p024r027\p023r026\p023r028\p023r028_7t20000519_z16_merged.tif -seperate -q -v C:\test\RasterMerge\p024r027\p023r026\p023r028\p023r028_7t20000519_z16_nn10.tif
C:\test\RasterMerge\p024r027\p023r026\p023r028\p023r028_7t20000519_z16_nn20.tif
注意:我把每个命令中的其他5个文件名去掉了,这样看起来更清晰一些。 我正在开发一个Python工具,它可以为我生成一个批处理文件。但是当我尝试运行这个.bat文件时,只有第一个命令成功执行,然后就返回到控制台。我是在FWTools的命令行中运行它的。我用十六进制编辑器打开了这个批处理文件,查找多余的换行符和回车符,但没有发现什么异常,所以看起来Python写入的内容是正确的。
1 个回答
4
`gdal_merge` 是一个批处理文件吗?
如果是的话,你需要在每一行前面加上 `call`,这样才能让批处理文件在调用其他批处理文件后返回。如果不加 `call`,那么新批处理文件里的退出命令会被当作真正的退出处理,这样就会完全退出了:
call gdal_merge -o C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_merged.tif -seperate -q -v C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_merged.tif C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_nn10.tif C:\test\RasterMerge\p023r027\p023r027_7t20010623_z16_nn20.tif
call gdal_merge -o C:\test\RasterMerge\p024r027\p024r027_7t19990828_z16_merged.tif -seperate -q -v C:\test\RasterMerge\p024r027\p024r027_7t19990828_z16_nn10.tif C:\test\RasterMerge\p024r027\p024r027_7t19990828_z16_nn20.tif
...
(也有可能是 Python 本身通过批处理文件运行,这种情况下同样适用,不过你也可以用 `call python gdal_merge.py -o ...` 来运行)
如果这不是一个批处理文件,那就试试用 `start /B`,这样可以在后台启动一个新任务。如果你需要这些任务一个接一个地执行,而不是同时进行,那就用 `start /B /WAIT`。