複数のファイルを一括で連番付きリネームするバッチファイル

バッチファイルの練習として作った。

複数ファイルを一括で連番付きファイル名にリネームするバッチファイル

使い方

(1) リネームしたい複数のファイルを選択して、バッチファイルにドラッグ&ドロップする。

f:id:hk03ne:20161016162247j:plain

(2) ファイル名の先頭に付加する文字列を聞かれるので、好きな文字列を指定する。

f:id:hk03ne:20161016162709j:plain

(3) リネームされる。

f:id:hk03ne:20161016162727j:plain

f:id:hk03ne:20161016162048j:plain

説明

31~32行目

set INDEX=00000000000000%INT_INDEX%
set INDEX=!INDEX:~-%PAD_LENGTH%!

0でパディングされた連番を生成している。環境変数の遅延展開を利用している。

35~36行目

set FILENAME="%~nx1"
set EXTENSION=%~x1

絶対パスからファイル名と拡張子の部分を取り出している。

注意

ファイル名に「&」があるファイルは正常にリネームできないので注意してください。

参考

Cで文字列入力用の関数を作成する

C言語で標準入力に入力された文字列を読み込むとき、scanf で読み込むとバッファオーバーランになる危険性がある。フォーマット指定をしっかりやればバッファオーバーランは防げるらしい*1 が、正直なところ面倒くさい。

fgets で何とかしつつ、かつ標準入力にゴミを残さないようにするのがいいと思う。

fgets は改行を含めて読み込むので、読み込まれた文字列の中に改行文字が見つかれば、最後まで読み込めていることになる。

改行文字が見つからなかった場合は、読み取られなかった分が標準入力に残っているので、空読みしてエラーを返すようにする。

以下、サンプルコードと動作例を示す。

サンプルコード

Cで標準入力から文字列を読み取る関数とその使用例のサンプルコード

動作例

f:id:hk03ne:20160813000345j:plain

他にもやり方はあるかもしれないが、当面はこれで問題はない。

参考

無印良品 USBデスクファンの分解と掃除

暑くなってきたので、無印良品のUSBデスクファンを引っ張り出してきた。残念なことにほこりがついていたので、分解して掃除した。

この製品はファンの後ろ側の部分が簡単に外れるようになっているけど、一見しただけでは外し方がわかりにくいようになっている。

ファンの後ろ側の部分をつかんで、(ファンの後ろ側を手前として)反時計周りに回すと、分離できる。

f:id:hk03ne:20160418195743j:plain

また、後ろ側の羽は引っ張るだけで簡単にとれる。

f:id:hk03ne:20160418195804j:plain

さらに、ドライバを使えば前側の部分も外れるみたいだが、ドライバがないのでできなかった。

すこしやりづらかったが、ウェットティッシュで拭いて掃除は終わり。

f:id:hk03ne:20160418200322j:plain

これで気持ちよく使えるようになった。