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

时间:2013-03-20 06:58:08

标签: for-loop batch-file cmd

我需要运行一个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

1 个答案:

答案 0 :(得分: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

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