Проверка версии файла в Ruby в Windows

Вы можете использовать понимание list:

df.columns = [str(col) + '_x' for col in df.columns]

Существуют также встроенные методы, такие как .add_suffix() и add_prefix , как указано в другом ответе.

11
задан mikej 13 May 2010 в 09:23
поделиться

4 ответа

Для Windows EXE и DLL:

require "Win32API"
FILENAME = "c:/ruby/bin/ruby.exe" #your filename here
s=""
vsize=Win32API.new('version.dll', 'GetFileVersionInfoSize', 
                   ['P', 'P'], 'L').call(FILENAME, s)
p vsize
if (vsize > 0)
  result = ' '*vsize
  Win32API.new('version.dll', 'GetFileVersionInfo', 
               ['P', 'L', 'L', 'P'], 'L').call(FILENAME, 0, vsize, result)
  rstring = result.unpack('v*').map{|s| s.chr if s<256}*''
  r = /FileVersion..(.*?)\000/.match(rstring)
  puts "FileVersion = #{r ? r[1] : '??' }"
else
  puts "No Version Info"
end

'Распаковывание' +regexp часть является взломом, "надлежащим" путем является VerQueryValue API, но это должно работать на большинство файлов. (вероятно, терпит полный провал на расширенных наборах символов.)

12
ответ дан 3 December 2019 в 04:34
поделиться

Что, если Вы хотите получить информацию о версии с рубином, но код Ruby не работает на Windows?

Следующее делает просто что (учет того же расширенного набора символов, предупреждающего):

#!/usr/bin/ruby

s = File.read(ARGV[0])
x = s.match(/F\0i\0l\0e\0V\0e\0r\0s\0i\0o\0n\0*(.*?)\0\0\0/)

if x.class == MatchData
  ver=x[1].gsub(/\0/,"")
else
  ver="No version"
end

puts ver
5
ответ дан 3 December 2019 в 04:34
поделиться

Если Вы работаете над платформой Microsoft, необходимо смочь использовать API Win32 в Ruby для вызова GetFileVersionInfo (), который возвратит информацию, которую Вы ищете. http://msdn.microsoft.com/en-us/library/ms647003.aspx

3
ответ дан 3 December 2019 в 04:34
поделиться

Для любого файла необходимо было бы обнаружить, в каком формате файл находится, и затем откройте файл и считайте необходимые байты для обнаружения, каков версия файл. Нет никакого API или общепринятой методики для определения версии файла в Ruby.

Обратите внимание, что было бы легче, если бы версия файла была в имени файла.

1
ответ дан 3 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: