2012-01-11 3 views
2

Есть ли способ копировать файлы со своей структурой каталогов?Как скопировать файлы со структурой каталогов?

Вот что у меня есть:

files = FileList.new() 
    files.include("#{HOST_DIR}/**/bin/*.dll") 
    files.include("#{HOST_DIR}/**/bin/*.pdb") 
    files.include("#{HOST_DIR}/**/bin/*.xml") 
    files.include("#{HOST_DIR}/**/bin/**/*.xml") 
    files.include("#{HOST_DIR}/**/TestData/*.*") 
    FileUtils.cp(files,'c:/temp',:verbose => true)  

It копирует все файлы в одну папку c:/temp. Я хотел бы, чтобы файлы сохраняли структуру каталогов в #{HOST_DIR}.

UPDATE:

Я получил решение:

files.each do |file| 
    target = file.sub(SERVICEHOST_DIR,'c:/temp') 
    FileUtils.mkdir_p(File.dirname(target))  
    FileUtils.cp_r(file,target,:verbose => true) 
    end 

Есть лучше один?

ответ

0

Думаю, FileUtils#cp_r должен сделать трюк.

dest = 'c:/temp' 

files = Dir.chdir(HOST_DIR) do 
    Dir.glob %w' **/bin/*.dll 
       **/bin/*.pdb 
       **/bin/*.xml 
       **/bin/**/*.xml 
       **/TestData/*.* 
      ' 
end 

FileUtils.cp_r files, dest, :verbose => true 
+0

FileUtils.cp_r не работает для меня :( –

Смежные вопросы