Проблемы с использованием командного файла цикла 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"
Другие вопросы по тегам