Проблемы с использованием командного файла цикла For для подачи.tifs в процесс ГИС (gdal_polygonize)
Заранее спасибо за вашу помощь с этим.
Я уже пару дней читаю, экспериментирую и бьюсь головой об стену, и могу действительно помочь. Это моя первая попытка пакетного файла.
Я пытаюсь перебрать файлы.tif в папке и запустить на них процесс gdal. Я звонил.bat файл через командную строку в терминале OsGeo4W.
Я могу успешно запустить процесс gdal_polygonize для отдельных файлов, но не смог запустить его итеративно.
SETLOCAL EnableDelayedExpansion
SET MYPATH = C:\Users\mkcarte2\Desktop\Polygonize\
FOR /F %%i IN ('DIR /B %MYPATH%*.tif') DO (
SET MYPATHFILE=%%~nI ::Trying to parse only the filename, so that I don't stack extensions in the output file
SET infile=%%i
SET outfile=%MYPATHFILE%.shp!
gdal_polygonize %MYPATH%!infile! -F "ESRI Shapefile" %MYPATH%!outfile!
)
Мои сообщения об ошибках:
Для первого файла:
Предупреждение 1: Имя слоя 'ESRI Shapefile' настроено на>'ESRIShapefile' для достоверности XML. Предупреждение 1: Имя поля "%~nI.shp" настроено на "_nI.shp", чтобы быть> действительным именем элемента XML. 0...10...20...30...40...50...60...70...80...90...100 - сделано. Для последующих файлов:
Последующие файлы:
ОШИБКА 4: `! Infile!' не существует в файловой системе и не распознается как имя поддерживаемого набора данных. Невозможно открыть! Infile!
1 ответ
У вас есть несколько проблем.
Ваше определение MYPATH неверно. Пробелы важны при выполнении назначений SET. Вы создали имя переменной с пробелом в конце и значением с пробелом в начале.
Имена переменных FOR чувствительны к регистру:
%%i
а также%%I
это не одно и то жеSET outfile=%MYPATHFILE%.shp!
пришлось бы изменить наSET outfile=!MYPATHFILE!.shp
Но ваш сценарий может быть значительно упрощен:
for %%F in ("C:\Users\mkcarte2\Desktop\Polygonize\*.tif") do (
gdal_polygonize "%%F" "ESRI Shapefile" "%%~dpnF.shp"
)
Или вы можете запустить простой однострочник из командной строки, без какого-либо сценария:
for %F in ("C:\Users\mkcarte2\Desktop\Polygonize\*.tif") do gdal_polygonize "%F" "ESRI Shapefile" "%~dpnF.shp"