Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Copy a list (txt) of files

I've seen some scripts examples over SO, but none of them seems to provide examples of how to read filenames from a .txt list.

This example is good, so as to copy all files from A to B folder

xcopy c:\olddir\*.java c:\newdir /D /E /Q /Y 

But I need something like the next, where I can fill actually the source and destination folder:

 @echo off  set src_folder = c:\whatever\*.*  set dst_folder = c:\foo  xcopy /S/E/U %src_folder% %dst_folder% 

And instead of src_folder = c:\whatever\*.*, those *.* need to be list of files read from a txt file.

File-list.txt (example)

file1.pds filex.pbd blah1.xls 

Could someone suggest me how to do it?

like image 687
BoDiE2003 Avatar asked Jun 06 '11 20:06

BoDiE2003


People also ask

Is there a way to copy a list of filenames?

Press "Ctrl-A" and then "Ctrl-C" to copy the list of file names to your clipboard.

How do I export a list of files from a folder to text?

Right-click that folder and select Show more options. Click Copy File List to Clipboard on the classic menu. You'll still need to paste the copied list into a text file. Launch Run, type Notepad in the Open box, and click OK.


2 Answers

Given your list of file names in a file called File-list.txt, the following lines should do what you want:

@echo off set src_folder=c:\whatever set dst_folder=c:\target for /f "tokens=*" %%i in (File-list.txt) DO (     xcopy /S/E "%src_folder%\%%i" "%dst_folder%" ) 
like image 160
Frank Bollack Avatar answered Sep 19 '22 15:09

Frank Bollack


I just tried to use Frank Bollack and sparrowt's answer, but without success because it included a /U switch for xcopy. It's my understanding that /U means that the files will only be copied if they already exist in the destination which wasn't the case for me and doesn't appear to be the case for the original questioner. It may have meant to have been a /V for verify, which would make more sense.

Removing the /U switch fixed the problem.

@echo off set src_folder=c:\whatever set dst_folder=c:\target for /f "tokens=*" %%i in (File-list.txt) DO ( xcopy /S/E "%src_folder%\%%i" "%dst_folder%" ) 
like image 38
Scriptman Avatar answered Sep 17 '22 15:09

Scriptman