Iterators and arrays

I want to use each index of the array and loop it in such a way that the
path names can be passed into Dir so that i can carry out multiple
copies from different sources. unfortunately, it showed error while
trying to run the script. Any suggestions?

$DEST=“U:/test1”

source=[“C:/movtest/testing”, “C:/movtest”, “U:/movtest”,
“U:/movtest/new”, “U:/movtest/new1”]
j=source.length - 1
i= -1

while i<j

Dir.chdir(source[i])
print Dir.getwd
FileUtils.cp_r Dir.glob(‘2008*’), $DEST
i+=1

end

On Wed, Apr 2, 2008 at 11:53 AM, Clement Ow
[email protected] wrote:

j=source.length - 1

Posted via http://www.ruby-forum.com/.

You seem to get confused with the indexes, but the idiomatic Ruby code
would rather look like

dest = “u:/…”
sources = %w{ c:/movetest/testing c:/ … } # unless you have spaces
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

HTH
Robert

http://ruby-smalltalk.blogspot.com/


Whereof one cannot speak, thereof one must be silent.
Ludwig Wittgenstein

On 02.04.2008 13:17, Robert D. 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. :slight_smile:

Kind regards

robert

Robert K. wrote:

On 02.04.2008 13:17, Robert D. 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. :slight_smile:

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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs