1

次のようなフォルダー構造があります。

my/
 1/
  jpg/
 2/
  jpg/
 3/
  jpg/

etc.

ここで、すべてのフォルダー (1、2、3 (変換する jp2 ファイルがあります) など) で手動で実行し、imagemagick コマンドを実行します。

for %f in (*.jp2) do (convert %f -quality 25 jpg/%~nf.jpg)

しかし、どのようにバッチファイルやフォルダーを使い果たしmy、ループ内でjpgに圧縮し、最初12.

win cmdのディレクトリのループだけ...

4

4 に答える 4

3

私はおそらく次のようなものを使用します:

cd my
for /d %%d in (*) do (
  for %%f in ("%%~d\*.jp2") do (
    convert "%%~ff" -quality 25 "%%~dpf\jpg\%%~nf.jpg"
  )
)
于 2013-02-10T00:32:35.300 に答える
0

または、ループを使用することもできますFOR /R。これは、のバリエーションですFORが、再帰を伴います。

for /r "d:\root" %I in (*.jp2) do (convert "%I" -quality 25 "%~dpI\jpg\%~nI.jpg")

上記d:\rootは、ディレクトリへのパスに置き換える必要がありますmy\

CDルート ディレクトリに移動する必要はありません。上記のコマンドは、任意の場所から正常に実行され、/R切り替え後に指定されたディレクトリのみを処理します。

/Rまた、スイッチはディレクトリ ツリー全体を処理するように FOR ループに指示することにも注意してください。スキップしたい .jp2 ファイルを含むフォルダがツリーにある場合、この解決策はおそらくうまくいきません。

于 2013-02-10T00:22:52.507 に答える
0

より高いディレクトリでこれを試してください

for /f "tokens=*"  %f  in ('dir /b/s *.jp2') do pushd "%~pf" & convert "%f" -quality 25 %~nf.jpg & popd

その他のオプション:

さらに、FOR 変数参照の置換が拡張されました。次のオプションの構文を使用できるようになりました。

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    %~sI        - expanded path contains short names only
    %~aI        - expands %I to file attributes of file
    %~tI        - expands %I to date/time of file
    %~zI        - expands %I to size of file
    %~$PATH:I   - searches the directories listed in the PATH
                   environment variable and expands %I to the
                   fully qualified name of the first one found.
                   If the environment variable name is not
                   defined or the file is not found by the
                   search, then this modifier expands to the
                   empty string

The modifiers can be combined to get compound results:

    %~dpI       - expands %I to a drive letter and path only
    %~nxI       - expands %I to a file name and extension only
    %~fsI       - expands %I to a full path name with short names only
    %~dp$PATH:I - searches the directories listed in the PATH
                   environment variable for %I and expands to the
                   drive letter and path of the first one found.
    %~ftzaI     - expands %I to a DIR like output line

バッチ ファイルでは % の代わりに %% を使用することを忘れないでください。

于 2013-02-09T22:47:13.930 に答える
-1

以下は動作します

FOR /F "tokens=* delims=" %%G IN ('DIR /b /s /a-d  my') DO CALL :FileName "%%G"

Exit /b

:FileName
set str1=%~1
convert %f -quality 25 jpg/%str1%.jpg

Exit /b
于 2013-02-11T21:00:02.773 に答える