2010年01月25日

ポメラを買ってみたら、ファイル名変更が必要だった

 オーツは、ポメラ
2009.12.10 http://o-tsu.seesaa.net/article/135197748.html
2009.12.9 http://o-tsu.seesaa.net/article/135098240.html
2009.12.8 http://o-tsu.seesaa.net/article/135002918.html
を調べていましたが、結局、買うことにしました。DM-20 のほうです。
 一応、納品はされたのですが、パソコンからファイル類をコピーする段になって、はたと気がつきました。
 ポメラでは、拡張子 txt のついたファイル名のファイルしか開けないのです。
 オーツは、パソコン内にいろいろなテキストファイルを保存していますが、それらの多くには拡張子がついていません。どうせエディタで開くので、拡張子を付ける必要はないのです。ファイルを作成するとき、拡張子を付けるだけめんどうです。
 しかし、この状態でポメラにいくつかのフォルダーをコピーしても、今度はファイルが開けないということになります。
 そこで必要なのが、パソコン内のファイル(で拡張子がついていないもの)に一斉に txt の拡張子を付けることです。
 しかし、具体的にどうやったらいいのでしょうか。
 やりたいことは、すでに拡張子がついているものはそのままにして、それ以外の拡張子がないものに「.txt」を付けるということです。ファイルは数千個あるいは数万個あるので、とても手動では無理です。さまざまな階層が使われています。自分でプログラムを作るか、そういう自動ツールを探すかというところです。
 プログラムの自作も可能ですが、作成に時間がかかることと、もしもプログラムが間違っていたときにダメージが大きそうだということが、かなり心配です。あ、それ以前に、オーツは Windows のプログラミングをしていないから、ロングファイルネームが扱えないと思います(笑)。
 ということで、ツールを探してみるほうがいいかもしれません。しかし、こんな変なことをするツールなんてあるのでしょうか。

 さらに考えていたら、DOS のコマンドを組み合わせればできるような気がしてきました。
 dir コマンドでパソコン内の(サブフォルダーをすべて含む形で)全ファイル名一覧を作成し、ファイルに保存します。それをエディタで読み込んで、ファイル名の一覧を加工して、拡張子がついているファイルを含む行を消して、残ったものを1行ずつの ren コマンドに書き換えます。キーボードマクロを使えば手間がかからずにできそうです。こうして、数千〜数万行の ren コマンドを含むバッチファイルを作成し、一気に実行します。こちらのほうが実用的なように思います。どうも、オーツの発想はすぐ DOS 流になってしまって、いかにも時代遅れだなあと感じます(笑)。
 ファイル名を変更するフォルダーを自分で限定すれば、ファイル名変更が必要なフォルダーの中にあるファイルだけをいじり回すことができそうです。
 ポメラには、パソコン内の全部のファイルをコピーするわけではなく、特定のフォルダーに入っている一部のファイルだけですからこの方法が一番いいのかもしれません。

 こんなことを考えていたら、ふと気がつきました。オーツのパソコンの中には、データとして、何かのプログラムに読ませるためのファイルもいろいろあります。それらのファイルの拡張子も txt にしてしまうと、プログラムがエラーを起こします。しかし、いちいち拡張子を変えるファイルを指定するのは大変ですから、一気に拡張子を変更したいところです。
 上記の dir+ren コマンドで行えば、ren コマンドを作り出したあと、目でチェックして、拡張子を変えないものを選ぶことができそうです。(何かのプログラムに対するデータであることをオーツが記憶していればの話ですが。)

 何か、いい方法をご存じの方がいらしたら、オーツに教えてください。
2010.1.27 追記
 この話の続きを
http://o-tsu.seesaa.net/article/139466392.html
に書きました。
 よろしければご参照ください。
posted by オーツ at 06:51| Comment(7) | TrackBack(0) | パソコンとIT | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
以前一度コメントさせていただいたらむです。
数年前に仕事で使ったきりで最新版の使い勝手がどうかはわかりませんが、こんなものもあります。
http://hp.vector.co.jp/authors/VA014830/FlexRena/
当時は仕事に大いに役立ちました。
Posted by らむ at 2010年01月25日 15:24
らむ様
 お久しぶりです。
 これは大いに使えそうですね。
 「.」以外の文字の連鎖でファイル名ができているときに、その最後に「.txt」を付加するという書き方で行けますね。
 参考情報をありがとうございました。
Posted by オーツ at 2010年01月25日 15:47
コマンドラインから

>ren *. *.txt

これで可能ではないでしょうか。
Posted by UNSEIDO at 2010年01月26日 14:44
ちょっとコメントが不十分だったので・・・

拡張子のないテキストファイルをすべて同じディレクトリに入れる。

そのディレクトリ内でDOSのコマンドを実行

>ren *. *.txt

拡張子の無いファイルにすべて.txtが付く筈です。
Posted by UNSEIDO at 2010年01月26日 14:54
UNSEIDO 様
 コメント、ありがとうございます。
 オーツのパソコンでは、テキストファイルがあちこちのフォルダーに入っていて、論理的な階層構造をなしているため、それをくずしたくありません。
 したがって、それらのファイルを「一つのディレクトリに集める」という処理ができません。
 変更してから元の位置に戻すことができればいいのですが、これまたむずかしいでしょうね。
 ファイル数が数千個あることを前提に、お考えください。
 もしも、ren コマンドでサブディレクトリの中のファイル名についても変更できれば、たとえば
ren /S *. *.txt
などということができれば、ほぼそれで希望通りのものができるのですが、……。
Posted by オーツ at 2010年01月26日 17:01
今どきのバッチファイルは進化していて、お望みの処理は次のバッチファイルで行えると思います。

@echo off
for /r c:\test %%f in (*.) do (
 if exist %%f.txt (
  echo %%f → %%~nf.txt が存在するのでリネームできません.
 ) else (
  ren "%%f" "%%~nf.txt"
  echo %%f → %%~nf.txt リネームしました.
 )
)

2行目の c:\test が処理対象のディレクトリ名です。ただ、特殊属性のファイルは正しく処理できず、ほかにも問題があるかも知れませんので、実際の大規模な処理には専用のソフトをお使いください。
Posted by 98 at 2010年01月26日 23:35
98 様
 大変有益なコメント、ありがとうございます。
 なるほど、バッチファイルでこんなことができるのですね。
 何だか、再度、バッチファイルを勉強したほうがいいような気がしてきました。
 とはいえ、実は、昨夜、別の方法で実行してしまいました。
 今日のブログをご参照ください。
Posted by オーツ at 2010年01月27日 05:16
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック