Использование определенных строк в текстовом файле в качестве переменной в пакетном процессе

#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. Я исправил некоторые незначительные проблемы в вашем опубликованном коде. Если проблема все еще существует, пожалуйста, сообщите, в чем она заключается.