2014-03-30 20 views
0

我正在关注一个教程,并试图更改位于'drive/users/myname/test'下的文件夹中的三个文件的名称。我发现了错误:试图在Mac OS上使用Dir和File.rename更改文件的名称?

'chdir': No such file or directory - test'. 

出发的路径已经是“驱动器/用户/ MYNAME”,这就是为什么我认为我只需要输入“test”的Dir.chdir

如何在Mac OS上正确输入路径?

Dir.chdir('test') 

pic_names = Dir['test.{JPG,jpg}'] 

puts "What do you want to call this batch" 
batch_name = gets.chomp 
puts 
print "Downloading #{pic_names.length} files: " 


pic_number = 1 
pic_names.each do |p| 
    print '.' 
    new_name = "batch_name#{pic_number}.jpg" 

    File.rename(name, new_name) 
    pic_number += 1 
end 

回答

1

我认为你必须提供绝对路径。所以,你的第一行应该是:

Dir.chdir("/drive/users/myname/test") 

根据文档:

Dir.chdir("/var/spool/mail") 
puts Dir.pwd 

应该输出/var/spool/mail

有关更多示例,您可以查看documentation

0

在:

File.rename(name, new_name) 

name从不其尝试使用之前定义的。

也许p应该是namename应该是p

有了这个假设我会写循环类似:

pic_names.each_with_index do |name, pic_number| 
    print '.' 
    new_name = "#{ batch_name }#{ 1 + pic_number }.jpg" 

    File.rename(name, File.join(File.dirname(name), new_name)) 
end 

File.join(File.dirname(name), new_name)是很重要的。你必须在原文件名和新文件名中引用相同的路径,否则文件将被移动到一个新的位置,这将是当前工作目录指向的任何位置。目前,您在开始时使用的是chdir,但如果没有这一点,您会想知道文件的位置。

相关问题