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?
Press "Ctrl-A" and then "Ctrl-C" to copy the list of file names to your clipboard.
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.
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%" )
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%" )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With