Quiero hacer una herramienta que toma algunos nombres de archivo como parámetros, pero cuando se utiliza este código:Cómo llegar nombre de archivo largo de ARGV
ARGV.each do|a|
puts "Argument: #{a}"
end
y lo uso de arrastrar y soltar o "Enviar a" en Windows , Obtengo el nombre de archivo corto. Así que un archivo como "C:\Ruby193\bin\test\New Text Document.txt"
se convierte en C:\Ruby193\bin\test\NEWTEX~1.TXT
como argumento.
No hay ningún problema cuando ejecuto el script desde la línea de comandos, con los nombres de archivos largos como parámetros.
¿Cómo obtengo el nombre de archivo largo cuando uso arrastrar y soltar o enviar?
se encontró en http://www.varioustopics.com/ruby/518646-rre-ruby-cygwin-and-paths.html requieren 'encontrar' requerir '' fileutils requerir 'Win32API' def get_long_win32_filename (nombre corto) max_path = 1024 long_name = "" * max_path lfn_size = Win32API.new ("kernel32", "GetLongPathName", [' P ',' P ',' L '],' L '). Call (short_name, long_name, max_path) return (1..max_path) .include? (Lfn_size)? long_name [0..lfn_size-1]: short_name end ARGV.each do | a | pone un puts get_long_win32_filename (a) final – peter