Проблема со сценарием .BAT на imagemagick 7.0.8-25 при создании LOG преобразованных файлов и TIMESTAMPS - PullRequest
0 голосов
/ 08 февраля 2019

Я работаю над сценарием, который находит тысячи файлов изображений даже во вложенных папках (у меня есть разные типы предложений mogrify, для разных типов), предполагается создать файл .log и вставить туда все, включаятекущая дата и время.

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

Мой пакетный файл:

@ECHO OFF
SET LOGFILE=comprimir.log
call :LOG > %LOGFILE%
exit /B
:LOG
FOR /r "C:\imagemagick\image" %a in (*.jpg) do
mogrify -quality 90 -interlace PLANE -sampling-factor 4:2:0 -compress 
JPEG2000 -colorspace RGB "%~a"
ECHO %DATE% %TIME%

Но что-то не так, когда я пытаюсь выполнить, я получаю этоошибка:

«В данный момент не ожидается»

Почему я получаю эту ошибку?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Непосредственно из cmdline мы используем %, но внутри пакетного файла нам нужно удвоить их %%.Вам также не нужно вызывать метку, вы можете напрямую войти в систему за один раз.

@echo off
setlocal enabledelayedexpansion
set "log=comprimir.log"
(for /r "C:\imagemagick\image" %%a in (*.jpg) do (
    mogrify -quality 90 -interlace PLANE -sampling-factor 4:2:0 -compress JPEG2000 -colorspace RGB "%%~a"
    echo !date! !time!
 )
)>>%log%
0 голосов
/ 08 февраля 2019

Когда вы находитесь внутри командного файла, вы должны использовать %%A вместо %A, который вы используете.Кроме того, где ваша скобка?

Другая проблема заключается в том, что вы находитесь в блоке кода (цикл for) и используете %DATE% и %TIME% без задержано расширение .Это не сработает.

Итак, я бы предложил:

@echo off
setlocal EnableDelayedExpansion

set "logfile=comprimir.log"
(call :log)>%logfile%
exit /B

:log
for /R "C:\imagemagick\image" %%A in (*.jpg) do (
    mogrify -quality 90 -interlace PLANE -sampling-factor 4:2:0 -compress JPEG2000 -colorspace RGB "%%~A"
    echo !date! !time!
)
...