2017-05-20 84 views
-1

我有一个具有多个文件(.img,.pdf,.docx)的文件夹。我想过滤一个文件.docx并将文件复制到其他文件夹。如何在一个文件夹中过滤多个文件

代码我迄今(从评论复制):

Dir.glob('G:/Documents/Code/*.pdf') do |f| 
    # name = File.basename('G:/Documents/Code/#{f}','.pdf') 
    # FileUtils.cp("G:/Documents/Code/#{name}","G:/demo") 
    filename = File.basename(f,'.pdf') 
    puts "#{filename}" 
    FileUtils.copy "G:/Documents/Code/#{filename}","G:/demo" 
end 
+0

我的文件夹有很多文件docx和其他类型的文件。请帮助我 – Div

+0

Dir.glob('G:/ Documents/Code/*。pdf')do | f | (G:/ Documents/Code /#{name}“,”G:/ Documents/Code /#{f}','。pdf') #FileUtils.cp/demo“) filename = File.basename(f,'。pdf') puts”#{filename}“ FileUtils.copy”G:/ Documents/Code /#{filename}“,”G:/ demo “ 结束 – Div

+0

这是我的代码。我不能运行它:( – Div

回答

0

试试这个代码:

require 'fileutils' 

Dir.glob('G:/Documents/Code/*.pdf') do |f| 
    FileUtils.copy f,"G:/demo" 
end 

在你原来的代码你有No such file or directory错误,因为filename只拿到的名字该文件但没有扩展名(例如Apress - Pro ASP.Net MVC 5而不是Apress - Pro ASP.Net MVC 5.pdf,所以FileUtils.copy找不到它。通过使用Dir.glob中指定的完整文件路径(即,不使用任何修改,使用f)解决了该问题。

+0

I找到并修复它。非常感谢你 – Div

+0

@Dif Great!如果提供的解决方案有效,你可以接受答案(点击打勾)。 – Gerry

+0

好的。谢谢:) – Div

相关问题