将文件从子文件夹复制到另一个目录

问题描述 投票:0回答:1

我有一个文件夹,上面有子文件夹,上面有一个子文件夹,在最后一个子文件夹中,有图片。这样的东西。。

FolderMaster
|--chicken
|    |--pic
|        |--NiceChicken.png
|--cow
|    |--pic
|         |--NiceCow.png
|--bird
    |--pic
         |--NiceBird.png

。可以从pic文件夹中复制所有* .png(我只需要图片)(因为'FolderMaster'的每个子文件夹都具有相同的子文件夹,即'pic')到'FolderMaster'之外的另一个文件夹/目录中,只是叫ii'FolderOther'?我是递归方法,但对此一无所知。我尝试了这个,但是看来我的方法不起作用。由于它给我“解析错误”。。

for /D %%A in ("E:\Picturez\test11\FolderMaster") do (
  for /D %%B in ("%%~fA\*") do (
    for /D %%C in ("%%~fB\pic") do (
    xcopy /L /I "%%~fC\*.png" E:\Picturez\test22\FolderOther"
  )
)
)

。也许有人可以帮助我。我在win 8.1中执行此操作,将其写在.bat文件中,以防此信息有帮助。

batch-file cmd
1个回答
0
投票

提供的脚本最明显的问题是,第四行的双引号不平衡。

@Echo Off
For /D %%A In ("E:\Picturez\test11\FolderMaster") Do (
    For /D %%B In ("%%~A\*") Do (
        For /D %%C In ("%%B\pic") Do (
            XCopy /L /I "%%~C\*.png" "E:\Picturez\test22\FolderOther"
        )
    )
)

但是,您可以整理一下以:

@For /D %%A In ("E:\Picturez\test11\FolderMaster"
) Do @For /D %%B In ("%%~A\*"
) Do @For /D %%C In ("%%B\pic"
) Do @XCopy /L /I "%%~C\*.png" "E:\Picturez\test22\FolderOther"

或者最好还是将其缩短为:

@For /D %%A In ("E:\Picturez\test11\FolderMaster\*"
) Do @For /D %%B In ("%%A\pic"
) Do @XCopy /L /I "%%~B\*.png" "E:\Picturez\test22\FolderOther"

可以进一步简化为:

@For /D %%A In ("E:\Picturez\test11\FolderMaster\*"
) Do @XCopy /L /I "%%A\pic\*.png" "E:\Picturez\test22\FolderOther"

一旦您对输出感到满意,您显然会从/L命令中删除XCopy选项。


最后,如果这些是目标树中仅有的png文件,则以下内容可能对您同样有用:
@For /R "E:\Picturez\test11\FolderMaster" %%A In ("*.png"
) Do @Echo=Copy /Y "%%A" "E:\Picturez\test22\FolderOther"

在最后一个示例中,当您对输出感到满意时,将删除Echo=

© www.soinside.com 2019 - 2024. All rights reserved.