1

我需要运行一个 bat 文件将每个子文件夹中的照片重命名为子文件夹名称,并将所有照片复制到一个新文件夹中。每个子文件夹仅包含一张照片。

我想写一个批处理文件来完成这个任务,因为有很多子文件夹,但是,我只能成功复制最后一个子文件夹中的照片。

子文件夹按从“00000001”开始的编号顺序命名。

我发现照片被重命名为相同,因此只能复制一张照片。

这是我的代码:

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

每个子文件夹中必须只有一张照片

于 2013-03-20T07:33:38.277 回答