|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 -- Posted via http://www.ruby-forum.com/. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Wed, Apr 2, 2008 at 11:53 AM, Clement Ow
<clement.ow@asia.bnpparibas.com> wrote: > 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 > -- > 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 |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On 02.04.2008 13:17, Robert Dober wrote:
> On Wed, Apr 2, 2008 at 11:53 AM, Clement Ow > <clement.ow@asia.bnpparibas.com> wrote: >> 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 >> -- >> 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 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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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/. |
|
![]() |
| Outils de la discussion | |
|
|