Как конвертировать папку файлов с помощью GDAL TRANSFER? - PullRequest
0 голосов
/ 16 марта 2020

У меня есть около 2000 изображений, которые необходимо преобразовать из TIF в JPG с некоторыми параметрами, используя GDAL. Мне нужно добиться этого с помощью CMD сценария. Вот мой сценарий:

set "SourceFolder=C:\Tif\newimages\"
set "DestinationFolder=C:\Tif\temp"
set "CreatedFolder="

if not exist "%DestinationFolder%\" (
    md "%DestinationFolder%" 2>nul
    if not exist "%DestinationFolder%\" (
        echo Error: Failed to create folder "%DestinationFolder%"
        goto EndBatch
    )
    set "CreatedFolder=1"
)
for %%N in (%SourceFolder%*.tif) DO gdal_translate -of jpeg -a_nodata 0 -b 1 -b 2 -b 3 %%i %DestinationFolder%\%%i*jpg

:EndBatch
endlocal
pause

Это выдает следующее сообщение об ошибке в CMD:

ERROR 4: %i: No such file or directory

Фон:

Windows окружение (очевидно, )
OSGeo4W cmd для запуска скрипта.

Что мне нужно, так это объяснение того, что я делаю неправильно со скриптом, и предложения по его функционированию.

Редактировать:

Я понимаю, что команды в конце строки gdal должны быть источником и местом назначения преобразованных файлов. Есть ли способ обойти это, поскольку мне нужно будет только определить папку назначения в конце. Я заставил его работать как бесконечный l oop, что, конечно, не было оптимальным, поскольку число изображений превышает 2000.

1 Ответ

0 голосов
/ 16 марта 2020

Ну, после более тщательного изучения выясняется, что я установил значение для %%N и позже попытался использовать %%i. Кроме того, команда gdal должна быть такой:

DO gdal_translate -of jpeg -a_nodata 0 -b 1 -b 2 -b 3 %%N %DestinationFolder%\%%~nN.jpg

Вместо:

DO gdal_translate -of jpeg -a_nodata 0 -b 1 -b 2 -b 3 %%i %DestinationFolder%\%%i*jpg
...