imagemagick 7.0.8-25上的.BAT脚本问题,创建已转换文件和TIMESTAMPS的日志

时间:2019-02-08 11:43:58

标签: batch-file imagemagick 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 :(得分:0)

在批处理文件中时,应使用%%A而不是%A。另外,您的括号在哪里?

另一个问题是,您处于代码块(for循环)中,并且正在使用%DATE%%TIME% delayed expansion。这是行不通的。

所以,我建议:

@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!
)

答案 1 :(得分:0)

我们直接从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%