Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 17859
  • Last Modified:

recursive copy

Have a question regarding a dos batch copy.  Say I have the following dir structure - a1\archive\a.txt, b1\archive\b.txt, ... , z1\archive\z.txt.  How can I write a batch that will essentially go through the list of directories, and copy the *.txt file one directory level up.  ie, copy a.txt from archive sub dir to a1\, copy b.txt from archive to \b1, etc...

Thanks.
0
pscuenco
Asked:
pscuenco
1 Solution
 
adbabypenguinCommented:
If your directory structure was really like that, you could use this:

You would type in: rcopy.bat a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 etc... z1

The batch file would contain:
@echo off
cd %1
copy archive\%1.txt ..
cd ..
cd %2
copy archive\%2.txt ..
cd ..
cd %3
copy archive\%3.txt ..
cd ..
cd %4
copy archive\%4.txt ..
cd ..
cd %5
copy archive\%5.txt ..
cd ..

etc...etc...etc...

cd %26
copy archive\%26.txt ..
cd ..
echo Done

The effect would be:

\---a1---archive---a1.txt
  |
  |--a2---archive---a2.txt

etc...

to

\---a1---a1.txt
  |
  |--a2---a2.txt

etc...
0
 
_nn_Commented:
I'm afraid %26 will be interpreted as '%2' and '6' ...

Based on your requirements, I would try :

@echo off
for %%k in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do copy %%k1\archive\%%k.txt %%k1\%%k.txt
0
 
adbabypenguinCommented:
I tried to figure out a for statement, but ended up not being able to. But that for statement should work.
0
Configuration Guide and Best Practices

Read the guide to learn how to orchestrate Data ONTAP, create application-consistent backups and enable fast recovery from NetApp storage snapshots. Version 9.5 also contains performance and scalability enhancements to meet the needs of the largest enterprise environments.

 
lincoln_sternCommented:
Xcopy /s will do subdirectories
0
 
PashaModCommented:
PAQed - no points refunded (of 250)

PashaMod
Community Support Moderator
0
 
lesgetdownCommented:
Just for reference this works
copy into a text file and rename <filename>.bat or .cmd if u like
Set the output directory to the directory that you want to output:


set outputdir=c:\test
if NOT exist %outputdir% mkdir %outputdir%
if exist copylist.txt rm copylist.txt

xcopy /S/L *.txt %outputdir% > copylist.txt
for /f "tokens=*" %%a in (copylist.txt) do copy %%a %outputdir%
rm copylist.txt
0

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now