#csv #batch-file #batch-processing #gdal
#csv #пакетный файл #пакетная обработка #gdal
Вопрос:
Я пишу пакетный файл, который обрабатывает изображение с использованием внешнего инструментария на основе существующего image ( %%t
), запрашивает текстовый файл со столбцами данных для определенного значения, а затем отправляет запрошенные данные обратно в пакетный процесс в качестве новых критериев команды. Мой код выглядит следующим образом:
for /r %%t in (*.tif) do (
cd /d C:Program FilesAllegorithmicSubstance Automation Toolkit
sbsrender.exe render -v --input "C:Program FilesAllegorithmicSubstance Automation Toolkittest.sbsar" --set-entry input@"%%t" --output-path "C:UsersDaveDesktopSubstance" --output-format jpg --output-name "%%~nt"
cd C:UsersDaveDesktopSubstance
for /f "tokens=1-5 delims= " %%a in (C:UsersDaveDesktopsectors.txt) do (
if "%%e"=="%%~nt" (
gdal_translate -of JPEG -co QUALITY=81 -a_ullr %%a %%b %%c %%d %%~nt.jpg %%~nt%-1.jpg
)
)
)
pause
Важный аспект должен быть на месте — имя файла, сгенерированного в первую очередь, должно быть сохранено в качестве критерия для запроса текстового файла ( %%~nt
), поскольку именно это значение определяет координаты для передачи gdal_translate
команде:
598000 5728000 602000 5724000 19
Я запрашиваю это окончательное значение в последнем столбце, потому что оно должно соответствовать имени файла, на которое ссылается самая первая строка кода. Исходные tif
файлы соответствуют строкам в текстовом файле. Чтобы это работало, "%%e"
должно быть равно "%%~nt"
. Он должен возвращать координаты для правильного сектора.
Заранее спасибо.
Комментарии:
1. Некоторые проблемы синтаксиса заключаются в том, что открывающие круглые скобки, как ожидается, будут находиться в той же строке,
if
что и , иначе произойдет синтаксическая ошибка. Также отсутствуют закрывающие круглые скобки. Если они исправлены, то в чем собственно проблема? поскольку я протестировал и получил оцененный результатif "19" == "19" (
использования целевого файла с именем19.tif
.2. У меня все еще возникают проблемы. Командное окно появляется и немедленно закрывается, вероятно, из-за проблемы с синтаксисом скрипта. Я добавил открывающие и закрывающие круглые скобки в
if
строку, но это все еще не работает.( for /f "tokens=1, 2, 3, 4, 5 delims= " %%a IN (C:UsersDaveDesktopsectors.txt) DO (if "%%e"=="%%~nt" ) gdal_translate -of JPEG -co QUALITY=81 -a_ullr %%a %%b %%c %%d %%~nt.jpg %%~nt%-1.jpg ) ) pause
3.Хорошо, я все понял. В конце концов я исправил свою структуру скобок, просмотрев эти две ссылки: ss64.com/nt/syntax-brackets.html ss64.com/nt/for.html Спасибо.
4. Я исправил некоторые незначительные проблемы в вашем опубликованном коде. Если проблема все еще существует, пожалуйста, сообщите, в чем она заключается.