解决批处理调用第三方CLI命令后提前终止的问题
批处理执行ArcGIS CDF CLI后终止的解决方案
问题根源在于第三方CLI工具cdf本身是批处理脚本,直接在你的批处理中执行时会替换当前批处理进程,导致后续代码无法继续运行。
解决方法是给所有调用cdf和npm的命令前加上call,call会在子进程中执行目标脚本,完成后返回原批处理继续执行后续命令。
修改后的批处理代码如下:
@echo off echo Start of create cdpk script echo --------------------------- set cdf-app-name=%1 set data-provider-name=%2 echo Supplied arguments cdf-app-name=%cdf-app-name%, data-provider-name=%data-provider-name% echo Creating new cdf app (%cdf-app-name%)... call cdf createapp %cdf-app-name% cd %cdf-app-name% echo Creating new cdf provider (%data-provider-name%)... call cdf createprovider %data-provider-name% cd providers\%data-provider-name% echo Installing packages (ws, node-fetch, uuid)... call npm install ws@8.15.1 call npm install node-fetch@2.7.0 call npm install uuid@9.0.1 cd ..\..\..\ echo Copying source files (constructGeoJSON.js, model.js)...
补充说明:如果cdf是.exe可执行文件,那可能是命令返回错误触发批处理终止,可以在命令后添加&强制继续执行,或者用if errorlevel判断错误码并处理,但绝大多数这类场景都是批处理脚本调用的问题,优先用call解决。
内容的提问来源于stack exchange,提问作者DrDarrio
相关产品推荐
相关产品推荐

