Tôi muốn thực hiện một công cụ mà sẽ đưa một số tên tập tin như thông số, nhưng khi tôi sử dụng mã này:Làm thế nào để có được tên tập tin dài từ argv
ARGV.each do|a|
puts "Argument: #{a}"
end
và tôi sử dụng kéo và thả hoặc "gửi đến" trong Windows , Tôi lấy tên tập tin ngắn. Vì vậy, một tệp như "C:\Ruby193\bin\test\New Text Document.txt"
trở thành C:\Ruby193\bin\test\NEWTEX~1.TXT
làm đối số.
Không có vấn đề gì khi tôi chạy tập lệnh từ dòng lệnh, với tên dài là tham số.
Làm cách nào để lấy tên tệp dài khi tôi sử dụng kéo và thả hoặc gửi tới?
đã tìm thấy nó trên http://www.varioustopics.com/ruby/518646-rre-ruby-cygwin-and-paths.html require 'tìm' require 'FileUtils' require 'Win32API' def get_long_win32_filename (SHORT_NAME) MAX_PATH = 1024 long_name = "" * MAX_PATH lfn_size = Win32API.new ("kernel32", "GetLongPathName", [' P ',' P ',' L '],' L ') gọi (short_name, long_name, max_path) trả lại (1..max_path) .include? (Lfn_size)? long_name [0..lfn_size-1]: short_name kết thúc ARGV.each do | a | đặt số đặt get_long_win32_filename (a) kết thúc – peter