« W:第21話 還ってきたT/女には向かないメロディ | トップページ | 「窓の手」開発再開 »

2010年2月 7日 (日)

PowerShellとDOSプロンプト

「Irvine」にかませるURLリストを作ろうとRubyでスクリプトを作ってみたんですよ、Windows上で。
#「Irvine」もWindowsアプリですし。
URLリストって、結局テキストデータなので、生成した結果をリダイレクトでファイル化すればいいかと思って、ファイル化の機能はスクリプトには付けなかったんですね。で、やることも単純なので、PowerShellで実行しました。コンソール上でも期待通りの結果が得られたので、それをリダイレクトしてファイルを生成。で、それを「Irvine」に読み込ませようとしたら
エラー
何度やっても、「エラー」になり、できたファイルをテキストエディタで覗いてみた。コンソール上で見たものと同じ結果になっている。おかしなところは見当たらない。で、もう一度やってみる。やはり「エラー」になる。もう一度テキストエディタで開いてみた。と、ついでに文字コードを確認。そしたら、
UTF-16
で書き出されていた。ひとまず、その時はテキストエディタでShift-JISでURLリストのテキストファイルを保存し直し、Irvineに読み込ませた。

確か、Rubyは内部処理的にはUNICODEを使っていたはずなので、そのせいかと思い、スクリプト内で文字コードのエンコードを行なうように修正して、再度、PowerShellで実行しました。もちろん、結果はリダイレクトでファイル化です。で、できたファイルを、やはりテキストエディタで開いてみると
UTF-16
RubyのリファレンスでStringクラスのencodeメソッドのリファレンスを読み返したが、使い方は間違っていなかった。で、冷静になって考えた。「もしかして、PowerShellのコンソールって、UNICODEで処理してるんじゃないか」と。で、試しにDOSプロンプト(通称、DOS窓)でやってみたら、DOS窓ではShift-JISで書き出されてました。

PowerShellって、そのままUNICODEで文字列処理してるんですね。
#Windowsは内部処理的にはUNICODEで処理している
でも、さすがにUNICODE対応が当たり前の世代のシェルプログラムだからね、当然といえば当然ですね。
そういえば、「Windows 7」って、DOS窓あるんだっけ?確か、マイクロソフトがPowerShellを発表した時、「次期WindowsにはDOSプロンプトの代わりに搭載する」とかいってたような気がしましたが。
#ちなみに、PowerShellが登場したのは、Vistaの後。
#Windows Server 2008には標準で搭載されましたが。
そうすると、XP時代から人気のあるソフトに対してテキストデータを読み込ませるときは気を付けなければならないかもですね。まあ、PowerShellを使うユーザーがどれだけいるかってのもありますが。

GUIがメインのWindowsでCUIであるPowerShellを使う人はそうはいないかもしれませんが、これはこれで結構便利なんですよ。DOS窓よりも格段に性能も上がってますしね。定型処理や定型的なデータの作成をするにはかなり重宝しますよ。
#重たいアプリを動かす必要が無いですし。


| |

« W:第21話 還ってきたT/女には向かないメロディ | トップページ | 「窓の手」開発再開 »

パソコン・インターネット」カテゴリの記事

コメント

S.K.さん、情報提供ありがとうございます。
デフォルト環境なので、
>foo.exe | sc URLlist.txt
>とすればShift-JISで書き込まれるはずです。
でShift-JISで書き出されました。
フィルタ系コマンド(レット)も用意されてるんですね。
#私もほぼ入れっぱなしで、そんなに
#使ってなかったので。

投稿: あ~かいば | 2010年2月 7日 (日) 22時37分

デフォルトの状態なら
foo.exe > URLlist.txt
の代わりに
foo.exe | sc URLlist.txt
とすればShift-JISで書き込まれるはずです。
PowerShellのリダイレクトの文字コードはUTF-16LEで固定なので、
他を使いたい場合はsc(Set-Content)の-Encodingオプションか[Text.Encoding]::GetEncoding()とか使って、って感じになります。。。

投稿: S.K. | 2010年2月 7日 (日) 22時03分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: PowerShellとDOSプロンプト:

« W:第21話 還ってきたT/女には向かないメロディ | トップページ | 「窓の手」開発再開 »