Как получить имя файла в командной строке - PullRequest
0 голосов
/ 08 ноября 2019

В настоящее время моя программа должна выполнять следующие действия:

  1. Внутри цикла for проверьте размер файла первого вложения.
  2. После проверки размера файла я сохранюимя файла, который он читает.
  3. Выполните алгоритм для расчета желаемого размера и добавьте КБ в конце этого.
  4. Используйте ImageMagick, чтобы выбрать желаемый путь вывода, нужный файлразмер и имя входного файла
for %S in Images\RAW_IMAGE\*.jpg) do set outsize=%~zS & set name=%~nxS  & set /a outsize=(outsize*80/100)/1024 & set outsize=%outsize%KB & cd Images\RAW_IMAGE & mogrify -path Images\COMPRESSED_IMAGE  -define jpeg:extent=%outsize% %name%

По какой-то причине я получаю эту ошибку после запуска

: mogrify: невозможно открыть изображение '% name%'

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

Я подозреваю, что из-за моего непонимания того, как кодработает в CMD, значения размера и имени не обновляются.

Буду признателен, если кто-нибудь подскажет, что я делаю неправильно.

1 Ответ

1 голос
/ 08 ноября 2019

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

@echo off
setlocal enabledelayedexpansion
for %%i in (.\Images\RAW_IMAGE\*.jpg) do (
    set outsize=%%~zi
    set /a outsize=(outsize*80/100^)/1024
    set "name=%%~nxi"
    pushd .\Images\RAW_IMAGE
    mogrify -path Images\COMPRESSED_IMAGE  -define jpeg:extent=!outsize!KB !name!
    popd
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...