如何使用批处理文件仅复制文件(而不是目录)?

时间:2013-05-08 13:03:11

标签: batch-file cmd robocopy

目录结构是:

  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

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

许多人提前感谢!

5 个答案:

答案 0 :(得分:5)

在命令行上尝试:

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

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

答案 1 :(得分:1)

我认为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
    )

答案 2 :(得分:0)

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

试试这个:

@echo off
setlocal

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

答案 3 :(得分:0)

更简单的方法可能是

for / r %% p in(* .png,* .jpg)do copy %% p destinationFolder。

答案 4 :(得分:0)

有一个易于使用的程序叫Drop-It如果这是一个重复的任务,那么你可以使用它来将文件排序|复制到一个目录。希望这有帮助