For loop 在每个子文件夹中运行bat cmd失败

For loop 在每个子文件夹中运行bat cmd失败,for-loop,batch-file,cmd,For Loop,Batch File,Cmd,我需要运行一个bat文件,将每个子文件夹中的照片重命名为子文件夹名称,并将所有照片复制到一个新文件夹。每个子文件夹仅包含一张照片 我想写一个批处理文件来完成这个任务,因为有很多子文件夹,但是,我只能成功地复制最后一个子文件夹中的照片 子文件夹按编号顺序命名,从“0000000 1”开始 我发现照片被重命名为相同的,因此只能复制一张照片 这是我的密码: md "D:\photo" for /r %%d in (.) do (cd %%d for /r %%* in (.) do (set Cur

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

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

子文件夹按编号顺序命名,从“0000000 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如果输出正常,请尝试此操作并删除回显

@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

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

如果输出正常,请尝试此操作并移除回声

@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
每个子文件夹中必须只有一张照片