2015-07-14 :-(
_ 夜
2145 退勤
_ [COM番号][Windows][teraterm][ruby][シリアルポート]有効なシリアルポートを全て TeraTerm で開く
Windows 7 + ruby 2.2.2
Win32OLE か。闇だ。
require 'open3' require 'win32ole' # 有効なシリアルポートの一覧をハッシュで返す。 # (ポート名が key、接続機器の名前が value) def serialports locator = WIN32OLE.new("WbemScripting.SWbemLocator") services = locator.ConnectServer() comlist = {} # 内蔵シリアルポート一覧を取得 services.ExecQuery("SELECT * FROM Win32_SerialPort").each do |item| comlist[item.DeviceID] = item.Name end # PnPシリアルポート一覧を取得 services.ExecQuery("SELECT * FROM Win32_PnPEntity").each do |item| comlist[$1] = item.Description if item.Name =~ /\((COM\d+)\)/ end return Hash[ # シリアルポート名に含まれる数字も考慮し昇順にソート comlist.sort_by {|k, v| k.scan(/(\d+)|([^\d]+)/).map{|s| s[0] ? [0, s[0].to_i] : [1, s[1]] } } ] end #puts serialports.map{|k, v| "#{k}: #{v}"} serialports.each_key {|com| spawn "C:/Program\ Files\ \(x86\)/teraterm/ttermpro.exe", "/c=#{com}" }
ref.
[ツッコミを入れる]