user2338652
user2338652

Reputation: 467

How to copy only files(not directories) using batch file?

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!

Upvotes: 1

Views: 33415

Answers (5)

Ocalabob
Ocalabob

Reputation: 11

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
    )

Upvotes: 1

CMS_95
CMS_95

Reputation: 335

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

Upvotes: 0

Matt Williamson
Matt Williamson

Reputation: 7117

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
)

Upvotes: 0

Endoro
Endoro

Reputation: 37589

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 %%.

Upvotes: 6

Ben Brammer
Ben Brammer

Reputation: 998

an easier way of doing this might be

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

Upvotes: 0

Related Questions