【问题标题】:How to copy only files(not directories) using batch file?如何使用批处理文件仅复制文件(而不是目录)?
【发布时间】:2013-05-08 13:03:11
【问题描述】:

目录结构为:

  Images
    -Folder1
      -image1.jpg
      -image2.jpg
    -Folder2
      -image3.jpg
      -image4.png 
    -Folder3
      -image6.png
      -image7.jpg 
    -Folder4

我只想将所有图像(即 *.jpg、*.png)文件(不是文件夹)复制到父目录(“图像”)中。

我尝试过如下使用“robocopy”:

robocopy /np ..\..\Exam\Images ..\..\Exam\Images *.jpg *.png /S

这里所有的文件和文件夹都被复制了:(。但我只需要复制文件。怎么做?

提前非常感谢!

【问题讨论】:

    标签: batch-file cmd robocopy


    【解决方案1】:

    在命令行上试试这个:

    for /r "Images" %i in (*.jpg *.png) do copy "%~fi" "my\target folder"
    

    对于 bach 脚本,% 必须加倍 %%

    【讨论】:

    • 非常感谢:)。有效。我只是将其更改为我的具体要求,如下所示:for /r ..\..\Exam\Images %%f in (.jpg,.png) do copy %%f ..\. .\考试\图像
    • 你用这个不带通配符* ?
    • 哎呀!。不,在这种情况下,我使用了通配符 (*),即 *.jpg、*.png。感谢您指出这一点。
    【解决方案2】:

    我认为 COPY 或 XCOPY 最适合用于文件,而在处理文件夹时我更喜欢 Robocopy。

    使用发布的示例尝试:(调整路径以满足您的需求。

        @Echo off
        For /f %%b In ('Dir C:\Exam\Images /b /s /a:d') Do (
           Robocopy %%b C:\Exam\Images *.jpg *.png /xx /np
        )
    

    【讨论】:

      【解决方案3】:

      一个更简单的方法可能是

      for /r %%p in (*.png, *.jpg) 复制 %%p destinationFolder。

      【讨论】:

        【解决方案4】:

        Robocopy 只有 /XD 开关可以排除目录,但它会排除整个目录。我会使用批处理文件来代替。

        试试这个:

        @echo off
        setlocal
        
        for /f %%a in ('dir *.jpg *.png /b /s /a-d') do (
           copy %%a PathToImagesFolder
        )
        

        【讨论】:

          【解决方案5】:

          有一个易于使用的程序称为 Drop-It 如果这是一项重复性任务,那么您可以使用它来排序|移动|将文件复制到单个目录。希望这会有所帮助

          【讨论】:

            猜你喜欢
            • 2013-10-18
            • 2010-10-03
            • 2012-01-24
            • 1970-01-01
            • 1970-01-01
            • 2018-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多