[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Newbie - File Rename

Snoopy Dog

10/13/2006 9:10:00 PM

I am obviously missing something.

I am simple trying to rename some files with long names to a shorter
format.

Here are a couple of sample file names: longfilename - 0100.txt,
longfilename - 01-1.txt

Here is my code - rename.rb:

# Quick Script to rename files

puts 'start'
require 'find'
require 'ftools'
require 'enumerator'

dir1original = 'c:/temp/'

puts 'Here'

Find.find(dir1original) do |path|
puts 'The current item is ' + path
if File.file? path
puts path + ' is a file'
oldname = path
newname = path
newname.sub!('longfilename - 0', '0')
puts newname + ' Is the newfile'
puts "\n\nCheck About to RENAME file"
File.rename(oldname, newname)
puts 'Renamed ' + oldname + ' to ' + newname + "\n\n\n"
end
end

puts "\n\n"

When I run it I get the following error (after I get teh Check About to
RENAME file message:
rename.rb:21:in 'rename': No such file or directory - c:/temp/0101.txt
or c:/temp/0101.txt <Errno::ENOENT>
from rename.rb:21
from c:/ruby/lib/ruby/1.8/find.rb:39:in 'find'
from c:/ruby/lib/ruby/1.8/find.rb:38:in 'catch'
from c:/ruby/lib/ruby/1.8/find.rb:38:in 'find'
from rename.rb:12

My script is named rename.rb and is located on c:
This is on a Windows XP box.

Not sure what I have missed, but I figure it has to be something simple.

Help would be greatly appreciated.

Snoopy

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

5 Answers

Nobuyoshi Nakada

10/14/2006 1:55:00 AM

0

Hi,

At Sat, 14 Oct 2006 06:10:23 +0900,
Snoopy Dog wrote in [ruby-talk:219613]:
> if File.file? path
> puts path + ' is a file'
> oldname = path
newname = path.sub('longfilename - 0', '0')
> puts newname + ' Is the newfile'
> puts "\n\nCheck About to RENAME file"
> File.rename(oldname, newname)
> puts 'Renamed ' + oldname + ' to ' + newname + "\n\n\n"
> end

Assigning path to newpath doesn't create a new string, but
makes the latter to share the same string with the former and
oldname.

--
Nobu Nakada

Snoopy Dog

10/16/2006 4:31:00 AM

0

Nobuyoshi Nakada wrote:
> Hi,
>
> At Sat, 14 Oct 2006 06:10:23 +0900,
> Snoopy Dog wrote in [ruby-talk:219613]:
>> if File.file? path
>> puts path + ' is a file'
>> oldname = path
> newname = path.sub('longfilename - 0', '0')
>> puts newname + ' Is the newfile'
>> puts "\n\nCheck About to RENAME file"
>> File.rename(oldname, newname)
>> puts 'Renamed ' + oldname + ' to ' + newname + "\n\n\n"
>> end
>
> Assigning path to newpath doesn't create a new string, but
> makes the latter to share the same string with the former and
> oldname.

Just got back and tried this.

Same ERROR.

Any other ideas? Did I miss something on the install?


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

Charles L.

10/16/2006 9:39:00 AM

0

Snoopy Dog wrote:
>>> puts "\n\nCheck About to RENAME file"
>>> File.rename(oldname, newname)
> ......
>
> Just got back and tried this.
>
> Same ERROR.
>
> Any other ideas? Did I miss something on the install?

What about trying `require "fileutils"', at the top, and then using
`FileUtils.move(oldname, newname)' instead?
Especially on windows I find File.rename to be a bit flaky sometimes,
and am not sure if it will do the right thing with absolute paths.

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

Nobuyoshi Nakada

10/16/2006 4:12:00 PM

0

Hi,

At Mon, 16 Oct 2006 13:31:18 +0900,
Snoopy Dog wrote in [ruby-talk:219939]:
> > newname = path.sub('longfilename - 0', '0')

> Same ERROR.

Are you sure there is no exclamation mark?

--
Nobu Nakada

Snoopy Dog

10/16/2006 5:47:00 PM

0

unknown wrote:
> Hi,
>
> At Mon, 16 Oct 2006 13:31:18 +0900,
> Snoopy Dog wrote in [ruby-talk:219939]:
>> > newname = path.sub('longfilename - 0', '0')
>
>> Same ERROR.
>
> Are you sure there is no exclamation mark?

I had originally missed that.

With some additional "puts" statements I found that mistake. Still
errored out.

Went back and tried the File.rename and now it works.

I think it might have needed the 'require "fileutils"' statement.

Frustrating, but now working.

THANKS TO ALL WHO HELPED OUT.

Snoopy

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