如何让批处理文件在for循环执行完成后继续运行后续命令?
批处理循环后命令不执行的解决方法
问题根源在于你调用的gdalbuildvrt和gdal_calc如果是批处理格式的可执行文件(.bat/.cmd),直接执行会终止当前脚本的运行流程,不会返回原脚本继续执行。你只给第一个gdalbuildvrt加了call,后面两次gdalbuildvrt调用和gdal_calc调用都没加,导致循环执行到这些命令时,整个脚本直接退出,后续的dir命令根本没机会运行。
修正后的脚本如下:
for %%F in (*.tif) do ( echo Processing %%F echo Computing binary mask call gdalbuildvrt -a_srs EPSG:25832 -b 1 processed/%%~nF_b1.vrt %%F call gdalbuildvrt -a_srs EPSG:25832 -b 2 processed/%%~nF_b2.vrt %%F call gdalbuildvrt -a_srs EPSG:25832 -b 3 processed/%%~nF_b3.vrt %%F call gdal_calc --type=Byte --creation-option=PHOTOMETRIC=MINISBLACK ^ --creation-option=NBITS=1 --creation-option=TILED=YES ^ --creation-option=COMPRESS=DEFLATE ^ -A processed/%%~nF_b1.vrt -B processed/%%~nF_b2.vrt -C processed/%%~nF_b3.vrt ^ --calc="logical_not(logical_and(logical_and(A==0,B==0),C==0))" ^ --outfile processed/%%~nF.msk.tif ) dir /b /s *.tif > index.txt
给所有外部批处理命令加上call后,脚本会在执行完这些命令后回到原循环继续运行,直到整个for循环完成,最后执行dir命令生成index.txt。
内容的提问来源于stack exchange,提问作者geogrow
相关产品推荐
相关产品推荐

