2014年4月15日火曜日

WindowsのコマンドプロンプトでUTFなファイル名を扱う。

ちょっとMendeleyにトラブルが発生。よくある話みたいだけど、ファイルのリンクが切れた。

で、SQLiteの中身を見て、登録されているファイルの一覧を書き出す。

そして、Mendeleyに登録したはずのファイル一覧をコマンドプロンプトから取得する。

つまり、ファイルを整理しているフォルダの最上位の階層でコマンドプロンプトを開き、以下のコマンドを実行すれば、「いったんはMendeleyが受け付けて自動的に整理して配置したファイル一覧」が出来上がる。
dir /s /a-b /b > FileList.txt
dirコマンドのオプションは「再帰的に取得」「ファイルのみを取得(フォルダ名は不要)」「ファイル名のみを取得(ファイルサイズや日付などは不要)」という意味。

ところが、これをただ普通に行うと、Shift-JISで出てきちゃう。アクサンとかウムラウトのついた人名のファイルはそういう文字のついたファイル名で整理されてるのに、自動的にその辺を外したプレーンなアルファベットに変換されちゃう。

そりゃ困る。SQLiteから抽出したファイル名はURLエンコードだから、Unicode変換すると一致しているかどうかの判別がめんどくさくなる。

なので、何かできないかと調べてみたら…

コマンドプロンプトを起動するときに/uというオプションをつけるといいんだって。

Windows 8[.1]の場合、とりあえずコマンドプロンプトを実行してから、そのプロンプトでもう一度cmd.exeを/uオプション付きで実行しちゃえばいいわけだ。

そして、さっきのdirコマンドを実行すると、今度はファイル名一覧がUTFエンコードで取得できる。これでMendeleyからリンクがロストしたファイルを抽出できるわけだ。

…そういう問題が起きないのが一番なんだけど。

0 件のコメント:

コメントを投稿