ruby调用平台指令删除指定文件夹

正常情况下,ruby如果发现文件夹中有system,readonly,hide类型的文件,则是不能直接删除

他们的。如何解决呢? 以其人之道还治其人之身!

 

def dryf(fpath) #destroy file x = Iconv.iconv('utf-8','gbk',fpath).to_s %x{attrib -R -S -H /"#{Iconv.iconv('gbk','utf-8',x).to_s}/"} f = File.new(fpath,"w");f.puts("trust me!no xlie!!!"*1000);f.close #p x p "destroy File : " + x + " successed!!!" if 1==File.delete(fpath) #p "destroy File : " + fpath + " successed!!!";FileUtils.remove_file(fpath,true) end def del4nx(path) #del file for No Xlie!!!!!! (p "err path!";return) unless File.exist?(path) if File.directory?(path) Dir.entries(path).each do |x| unless x =~ /^(/.)+/ fn = path+"//"+x if File.directory?(fn) :del4nx(fn) else dryf(fn) end end end (p "del Dir : [" + path + "]";Dir.delete(path)) if Dir[path+"//*"].empty? #(p "del Dir : [" + path + "]";FileUtils.remove_dir path) if Dir[path+"//*"].empty? else p "del File : " + path if 1==File.delete(path) end return rescue p "err!["+$!.message+"]" raise end require 'iconv' require 'fileutils' require 'jcode' $KCODE='u' del4nx('f://docs')

你可能感兴趣的:(File,System,Ruby,Path,平台)