2012-03-01 46 views
15

Hey Tôi đang cố chuyển nhiều tệp từ một thư mục này sang thư mục khác. Trong dòng FileUtils tôi đang cố gắng tìm kiếm trong tất cả các thư mục 4 ký tự trong thư mục đích và sau đó dán tệp vào thư mục có cùng tên cơ sở với tệp.Sao chép tệp từ thư mục này sang thư mục khác bằng Ruby

#!/usr/bin/env ruby 

require 'fileutils' 

my_dir = Dir["C:/Documents and Settings/user/Desktop/originalfiles/*.doc"] 
my_dir.each do |filename| 
    FileUtils.cp(filename, "C:/Documents and Settings/user/Desktop/destinationfolder/****/" + File.basename(filename, ".doc")) 
end 
+1

@ KL-7, nó được coi là hình thức xấu để sửa đổi mã nguồn của mọi người. Vui lòng sử dụng nhận xét để xác định các vấn đề, chẳng hạn như dòng '#!' Bạn đã thay đổi. –

+4

@ theTinMan, tôi không nghĩ rằng đó là một ý tưởng tồi để giúp người dùng mới với sự chú ý mã thích hợp. Về shebang tôi nghĩ đó chỉ là lỗi đánh máy. –

Trả lời

31

Điều gì đó như thế này sẽ hoạt động.

my_dir = Dir["C:/Documents and Settings/user/Desktop/originalfiles/*.doc"] 
my_dir.each do |filename| 
    name = File.basename('filename', '.doc')[0,4] 
    dest_folder = "C:/Documents and Settings/user/Desktop/destinationfolder/#{name}/" 
    FileUtils.cp(filename, dest_folder) 
end 

Bạn phải chỉ định thư mục đích, tôi không nghĩ bạn có thể sử dụng ký tự đại diện.

+0

Bạn không nên sử dụng tên biến "dest_folder", tôi đã sao chép tập lệnh mà không nhìn vào nó và nó không hoạt động vì tôi nghĩ nó phải là một thư mục .. Có thể là lỗi của tôi mặc dù ..;) –

4

* là một ký tự đại diện có nghĩa là "bất kỳ số lượng ký tự", vì vậy "****" có nghĩa là "bất kỳ số lượng bất kỳ số lượng bất kỳ số lượng của bất kỳ số ký tự", mà có lẽ không phải những gì bạn muốn nói.

? là biểu tượng thích hợp cho "bất kỳ ký tự nào trong vị trí này", vì vậy "????" có nghĩa là "một chuỗi gồm bốn ký tự".

+0

Trong kết hợp mẫu vỏ, thực sự '****' có nghĩa là bất kỳ số nào của bất kỳ ký tự nào theo sau bởi bất kỳ số ký tự nào, theo sau là bất kỳ nymber nào của bất kỳ ký tự nào, theo sau là bất kỳ nymber nào của bất kỳ ký tự nào – akostadinov

Các vấn đề liên quan