Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

?
Lv 7
? 發問於 電腦與網際網路軟體 · 9 年前

請問 cmd 指令或批次檔寫法

我有一個處理相片的程式 mogrify

希望對 *.jpg 作處理

用法如下:

mogrify -resize 1024x1024 *.jpg

但是以上指令只能處理當前目錄的 *.jpg

無法處理子目錄的 *.jpg

希望能用一個指令或批次檔

將當前目錄含子目錄的 *.jpg 都做處理

請問該如何下指令

舉例:

圖片參考:http://imgcld.yimg.com/8/n/AE02667166/o/1612090703...

在上圖的資料夾【我的相片】中下 mogrify -resize 1024x1024 *.jpg可以讓【我的相片】目錄中的檔案 *.jpg 產生作用

但是無法影響子目錄【pic2】和【照片一】中的 *.jpg

有沒有辦法在工作目錄【我的相片】

下一個指令就讓所有 .jpg 檔

包含下面所有子目錄【pic2】、【照片一】中 *.jpg 都產生作用

更新:

HarryXe 大抱歉:

忘了說工作目錄下子目錄的名稱並不固定

而且可能有數十個

子目錄下有可能還有子目錄

也希望能一併處理

更新 2:

程式取自

http://www.imagemagick.org/script/binary-releases....

應該是下載這個 ImageMagick-6.7.9-3-Q16-windows-static.exe

之前裝在 Fedora Core 4 覺得很好用

想試試 windows 版

更新 3:

Fedora Core 4 的 script 寫法

#!/bin/sh

find . -name '*.jpg' -exec mogrify -resize 1024x1024">" {} \;

更新 4:

Abre 大應該就是正解了,

原來是要用 for /r ,

我有想到要用 for ,

但不知道要加 /r 。

星期一測試無誤後再給您最佳解答,

謝謝!

更新 5:

resize 後直接覆蓋原檔

就是幫圖片瘦身啦

因為現在的相機畫素都很高

大家一直存又不處理的話

硬碟很快就爆了

-resize 1024x1024

是將圖片縮小成不超過 1024x1024 的大小

例如:

2048x1536 會變成 1024*768

3072x4028 會變成 768*1024

4028x4028 會變成 1024*1024

2 個解答

評分
  • Moore
    Lv 5
    9 年前
    最愛解答

    @echo off

    for /r %%i in (*.jpg) do mogrify -resize 1024x1024 "%%i"

  • ?
    Lv 6
    9 年前

    挖 厲害@@

    真是讓我佩服^^

還有問題嗎?立即提問即可得到解答。