多分組み合わせ的にレアなケースだと思うのだけど、円マークで混乱してしまった。
環境
やりたかった事
# coding: utf-8 require 'win32ole' wsh = WIN32OLE.new 'WScript.Shell' wsh.Run '"C:\Program Files\<云々>\<実行ファイル名>" <オプションとか>'
そしてエラー
<Rubyスクリプト>.rb:<行>:in `method_missing': (in OLE method `Run': ) (WIN32OLERuntimeError) OLE error code:80070002 in <Unknown> <No Description> HRESULT error code:0x80020009 Exception occurred. from <Rubyスクリプト>:<行>:in `<main>'
所要の Rubyスクリプトは xyzzy で編集していた、その文字エンコーディングは「Unicode (UTF-8N)」(ツール - ローカル設定 - もろもろ)。動かしたかった実行ファイル名は Windowsのエクスプローラーからドラッグ&ドロップしてきたもの。そのディレクトリ区切り文字「\(バックスラッシュ、"\\".ord # => 92)」がいつの間にか「¥(¥、¥)」にすり替わっていた(それは「¥(全角円マーク、'¥'.ord # => 65509)」でもない)。
で、.Run で実行しようとしてもそんなファイル見つからずエラーになる。
xyzzy の編集画面では、「¥(¥、¥)」も半角幅の表示で、はじめ違うとは思いもしなかった、疑ってよく見るとフォントフェイスがちょっと違うのだけど。
別にコピー&ペーストしても「\(バックスラッシュ、"\\".ord # => 92)」になるし、いろいろ動いたり動かなかったりでなんか大変混乱した。Windows の Shift_JIS(Windows-31J) をコピーしてきて xyzzy で UTF-8N にコード変換するときになんかあったんだろうか。
分かってしまえばよく目を凝らせば良いことなんだけど、それまで随分時間掛かった。