すがブロ

sugamasaoのhatenablogだよ

ファイルリネームの目からウロコ

 画像ファイルがたくさんあると仮定して。
img1.jpg img2.jpg ... img9.jpg
まであったとして、次に img10.jpg が必要となった。
こんな時にファイル名を
img01.jpg img02.jpg ... img09.jpg
にしたくなったというのはちょくちょくではないにせよたまにある話ですよね。
そんな時にオレなら perl とかでちょっとやれば出来るのかなと思っていたんだけど、そんなことよりもっとお手軽なのがあった。
それをC言語で書くとこうなる。

for (i = 1; i < 10; i++) {
printf("ren img%d.jpg img0%d.jpg\n", i, i);
}

フィンローダのあっぱれご意見番より
http://www.st.rim.or.jp/~phinloda/phin/phin9303.html

注意:printf 内でのファイル名を変更しました。ご了承ください。

 C言語をやったことある人ならすぐに気が付くと思うけど、これだけじゃただプロンプトに文字を出力しただけ。だけど、これの出力をテキストなどにしてやると簡単にバッチファイルを作成できるのだ。(出力された文字をコピーしてもいいけど)

例えばこんな感じ(上記のプログラムの実行ファイル名が sample.exeの場合)。

% sample.exe > chenge.bat
chenge.bat

 こうする事でカンタンに目的の動作を行うバッチファイルを作成することができるってわけですね。

 ちなみにこの話の何が目からウロコっていうと1つのプログラムで解決しようとするんじゃなくて、目的の動作をするファイルを作るプログラムを作るってこと。リダイレクトしたりして手間はちょっと掛かるかもしれないけど、C言語の文法が非常にカンタンなので間違いが少なくできるのではないかと思う。

 さらにちなみに。
オレの大好きな(笑)やねうらおさんのHPでも似たような技がのっていたのを思いだした。
http://www.sun-inet.or.jp/~yaneurao/rsp/

「第E1回 かくしてプログラマは放たれる(プログラムの無い世界へようこそ) 02/05/02」
参照のこと。
ただ、パンピークラスの実力しかないオレには前者の方がわかりやすい。というか、とっさに出てきやすいとおもう。