1

Заранее спасибо за вашу помощь с этим.

Я уже пару дней читаю, экспериментирую и бьюсь головой об стену, и могу действительно помочь. Это моя первая попытка пакетного файла.

Я пытаюсь перебрать файлы .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: `!входной_файл!'не существует в файловой системе и не распознается как имя поддерживаемого набора данных. Невозможно открыть !входной_файл!

1 ответ1

2

У вас есть несколько проблем.

  • Ваше определение 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .