1

batファイルを実行して、各サブフォルダーの写真の名前をサブフォルダー名に変更し、すべての写真を新しいフォルダーにコピーする必要があります。各サブフォルダには写真が1枚だけ含まれています。

サブフォルダがたくさんあるので、このタスクを実行するためのバッチファイルを作成したいのですが、最後のサブフォルダの写真しか正常にコピーできません。

サブフォルダは、「00000001」から始まる番号順に名前が付けられています。

写真の名前が同じに変更されたため、コピーできる写真は1枚だけであることがわかりました。

これが私のコードです:

md "D:\photo"

for /r %%d in (.) do (cd %%d
for /r %%* in (.) do (set CurrDirName=%%~n*
echo %CurrDirName%
ren "*.jpg" "%CurrDirName%.jpg"
copy *.jpg "D:\photo"))

コードを変更して、やりたいことがうまくいくようにアドバイスしてください。どうもありがとうございました。

詳細を編集

たとえば、cmd行では、プログラムはサブフォルダ "00000127"で実行されていますが、CurrDirName = 00000127を設定しますが、%CurrDirName%をエコーすると、最後のサブフォルダである00000128が表示され、すべてのサブフォルダは00000128を返しますが、CurrDirNameは返しません。

4

1 に答える 1

1

echoこれを試して、出力が問題ない場合は削除してください。

@echo off &setlocal
set "destination=d:\photo"
md "%destination%" 2>nul
for /d /r %%d in (*.*) do (
    pushd  "%%d"
    for %%i in (*.*) do echo copy "%%~i" "%destination%\%%~nd.jpg"
    popd
)
endlocal

各サブフォルダーには 写真が 1 つだけ存在する必要があります。

于 2013-03-20T07:33:38.277 に答える