From: Clement Ow Date: 2008-04-03T16:13:24+09:00 Subject: Re: Iterators and arrays Robert Klemme wrote: > On 02.04.2008 13:17, Robert Dober wrote: >>> source=["C:/movtest/testing", "C:/movtest", "U:/movtest", >>> >> in the pathes >> sources.each do | source | >> Dir.chdir source >> puts source >> FileUtiles.cp_r Dir.glob(...), dest # if this is what you really want >> end > > Inside the block I prefer > > Dir.chdir source do > puts source > FileUtiles.cp_r Dir.glob(...), dest > end > > which will restore the original current directory. That way, you can > more easily work with relative paths and it might save you from > surprises when in a completely unrelated location of a larger script > current dir is no longer the one that it was on program start. :-) > > Kind regards > > robert The code is actually feasible but for a typo mistake!(Cause there wasnt a dir named U:\test1) Here's the edited code: dest=%w[U:/test_1 U:/dest1 U:/dest2 U:/dest3 U:/dest4] j1=dest.length - 1 i1= 0 source=%w[C:/movtest/testing C:/movtest/testing/new U:/movtest/source U:/movtest/new U:/movtest/new1] j=source.length - 1 i= 0 while i<=j && i1<=j1 Dir.chdir(source[i]) print Dir.getwd print dest[i1] FileUtils.cp_r Dir.glob('2008*'), dest[i1] i+=1 i1+=1 end But is there anyway whereby, I can write all the 'print' to a log file for reference, just in case there might be an error in copying? And if possible have some conditions to test if the files did really copy over? Thanks. -- Posted via http://www.ruby-forum.com/.