这是我非常基本的复制代码:
require 'fileutils'
FileUtils.copy_file("\\\\winmomfs1\\3rdParty\\Oracle Client\\Oracle_11gR2\\win64_11gR2_client.zip","c:\\chef-tmp")
这是我得到的错误:
C:\Users\ctote\Desktop>ruby cp.rb C:/opscode/chef/embedded/lib/ruby/1.9.1/fileutils.rb:1371:in `initialize': Permission denied - c:/chef-tmp (Errno::EACCES)
from C:/opscode/chef/embedded/lib/ruby/1.9.1/fileutils.rb:1371:in `open'
from C:/opscode/chef/embedded/lib/ruby/1.9.1/fileutils.rb:1371:in `block in copy_file'
from C:/opscode/chef/embedded/lib/ruby/1.9.1/fileutils.rb:1370:in `open'
from C:/opscode/chef/embedded/lib/ruby/1.9.1/fileutils.rb:1370:in `copy_file'
from C:/opscode/chef/embedded/lib/ruby/1.9.1/fileutils.rb:477:in `copy_file'
from cp.rb:2:in `<main>'
我做错了什么?我可以通过资源管理器手动复制这些文件,所以我认为这不是权限。
答案 0 :(得分:2)
我认为您应该使用FileUtils::cp_r
并编写如下代码:
require 'fileutils'
FileUtils.cp_r("\\\\winmomfs1\\3rdParty\\Oracle Client\\Oracle_11gR2\\win64_11gR2_client.zip","c:\\chef-tmp")
看这篇文章 - Ruby-FileUtils copy_file Permission denied on Windows
答案 1 :(得分:0)
阅读本文,它来自the documentation for IO:
如果可能,Ruby将在不同的操作系统约定之间转换路径名。例如,在Windows系统上,文件名“/gumby/ruby/test.rb”将打开为“\ gumby \ ruby \ test.rb”....
它解决了这个问题:
FileUtils.copy_file("\\\\winmomfs1\\3rdParty\\Oracle Client\\Oracle_11gR2\\win64_11gR2_client.zip","c:\\chef-tmp")
然后把它变成:
FileUtils.copy_file("//winmomfs1/3rdParty/Oracle Client/Oracle_11gR2/win64_11gR2_client.zip", "c:/chef-tmp")