How to copy only files(not directories) using batc

2019-08-09 16:41发布

The directory structure is:

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

I want to copy all images(i.e *.jpg, *.png) files only (not the folders) into the parent directory("Images").

I have tried using "robocopy" as follows:

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

Here all files as well as folders are copied :(. But I need only files to be copied. How to do this?

Many many thanks in advance!

5条回答
Explosion°爆炸
2楼-- · 2019-08-09 17:13

Robocopy only has the /XD switch to exclude directories but it excludes the whole directory. I'd use a batch file to do it instead.

Try this:

@echo off
setlocal

for /f %%a in ('dir *.jpg *.png /b /s /a-d') do (
   copy %%a PathToImagesFolder
)
查看更多
Ridiculous、
3楼-- · 2019-08-09 17:16

I think COPY or XCOPY is best used for files while I prefer Robocopy when dealing with folders.

Using the posted example try: (adjust paths to suit your needs.

    @Echo off
    For /f %%b In ('Dir C:\Exam\Images /b /s /a:d') Do (
       Robocopy %%b C:\Exam\Images *.jpg *.png /xx /np
    )
查看更多
成全新的幸福
4楼-- · 2019-08-09 17:22

there is an easy to use program called Drop-It if this is a repetitive task then you can use this to sort|move|copy the files to a single directory. hope this helps

查看更多
爷、活的狠高调
5楼-- · 2019-08-09 17:27

an easier way of doing this might be

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

查看更多
爷的心禁止访问
6楼-- · 2019-08-09 17:33

Try this on the command line:

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

For a bach script the % must be doubled %%.

查看更多
登录 后发表回答