我試圖僅對大于 1,500kb 的檔案運行 Imagemagick mogrify。Imagemagick 命令將是magick mogrify *.jpg -resize 50%% *.jpg
所以在我自己研究之后,我最終得到了這個
@echo off
setlocal
set maxbytesize=1500000
FOR /F %%A IN (*.jpg) DO set size=%%~zA
if %size% GTR %maxbytesize% (
magick mogrify *.jpg -resize 50%% *.jpg
)
這不起作用,我不知道從哪里開始。我在https://unix.stackexchange.com/questions/38943/use-mogrify-to-resize-large-files-while-ignoring-small-ones上讀過,盡管我不這樣做,但我可能必須先過濾串列不知道如何實施。任何幫助表示贊賞。感謝您閱讀這篇文章。
uj5u.com熱心網友回復:
您的值將在檔案的每次迭代中被替換(除了在/F此處引起另一個問題的事實之外,請參閱for /?以獲取更多詳細資訊)
所以只有最后一個檔案的值被設定為值。此外,即使它們不是,您也在執行magickon *.jpg,即jpg目錄中的所有檔案。因此,如果最后一個檔案似乎與大小匹配,則所有檔案都將被調整大小,這有點違背目的,對嗎?
您真正需要的是遍歷檔案,每次匹配大小,然后執行操作:
@echo off
for %%A IN (*.jpg) DO if %%~zA gtr 1500000 magick mogrify "%%~A" -resize 50%% "%%~A"
uj5u.com熱心網友回復:
只是為了與眾不同,這里有一個示例,它do在for回圈部分之前預先過濾目標檔案,而不是將所有內容都傳遞給它,然后過濾它們的大小。
另外,我修改了mogrify引數,因為如果我沒記錯的話,調整大小會自動覆寫源檔案。
請記住輸入上線您的實際來源和Magick路徑4和5,在運行腳本之前。
@Echo Off
SetLocal EnableExtensons
Set "SourcePath=S:\ource\Directory"
Set "MagickPath=%ProgramFiles%\ImageMagick-7.1.0-Q16-HDRI"
If Not Exist "%MagickPath%\magick.exe" GoTo :EOF
CD /D "%SourcePath%" 2>NUL || GoTo :EOF
Set "}=
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364612.html
