‘コマンドプロンプト’ タグのついている投稿

Windowsでファイル名一括変更2(削除、追加)

2008 年 10 月 1 日 水曜日

前回、コマンドプロンプトでファイル名を一括変更するTipsを紹介した。
システム修行ブログ» ブログアーカイブ » Windowsでファイル名一括変更

これは、%iを変数に取り、forでループ処理して、ファイルの前に文字を追加するコマンドだった。

逆に、文字を一括して削除したいとき、もしくはファイルの「後に」文字を追加したい場合がある。そんなとき、ファイル名の文字数が同じだったら、こういう方法もある。


001.jpg
002.jpg
003.jpg

「“image”を後ろに付けたい場合」

rename ???.jpg ???image.jpg

?は、文字一つ分を表すリテラル。これでファイル名が次のようになる。

001image.jpg
002image.jpg
003image.jpg

「やっぱり“image”を後ろに削除したい場合」

rename ???image.jpg ???.jpg

ひっくり返して実行すればOK。

ファイルの前に付けたい場合に、単純に image???.jpg としてもうまくいかない。
この理由はしばらく不明だったが、いくつか検証してみて分かった。

例えば、
FL010001.jpg
というようなファイル名で

rename ????????.jpg 08-09-????????.jpg

とした場合、08-09-FL010001.jpgではなく、08-09-01.jpgとなってしまう。
これは、この文字列挿入が「上書き追加」(viで言うとa)なため、ファイル名の最後尾なら「追加」になるが、ファイル名の最初だと上書きになってしまう。そのためファイル名の長さによっては、保存できずにエラーになる。

Windowsでファイル名一括変更

2008 年 10 月 1 日 水曜日

たくさんあるファイルの名前を、一括変更したい!
具体的には、ファイルの前になにか接頭字を付けたい。こんなとき、皆さんだったらどうしますか?
さすがに手作業でやる個数じゃないしなー、プログラム書くかなー、と探していると、これまたコマンドで実現可能なことが分かった。(まぁプログラム書いたらそれはそれで勉強になるからいいんですけど)

for %i in (*) do rename “%i” “XYZ%i”

これで、そのディレクトリのファイル名に一括してXYZが付く。

  1. Winキー+R「ファイル名を指定して実行」もしくは「スター

    ト」-「全てのプログラム」-「アクセサリ」から「コマンドプロンプト」を実行

  2. 変換したいフォルダのパスをコピーし、cdコマンドで移動。例:「cd C:\Users\dacelo\Desktop」で移動
  3. コマンド実行。

以上。こんな便利なテクニックを今まで知らずに生きてきてしまった。Windowsってまだまだすげーなー。

こちらの説明も詳しい。

「ren %i 2007_09_%i」
の部分が、ファイル名を変更するコマンドで、「%1」というファイル名を「2007_09_%i」に変更しなさいという指示を与えています。
ファイル名の一括変換-FOR %変数 IN (セット) DO コマンド:コマンドプロンプトの使い方

Windowsのdirコマンドでファイル名リストを作成

2008 年 10 月 1 日 水曜日

Web制作業務で、1000枚近くある画像を扱うことになったので、さあ大変。データベースと連携させるにしろ、そのままHTML上に貼るにしろ、ファイルリストはどうしても必要になる。一枚ずつ手作業なんてどう考えてもやってられない・やってはいけないからだ。

そこで、

  • phpで再帰処理をして値を取得する
  • POMで取得する
  • そういうツールを探す…

など、色々な選択肢を考えたんだけど、実はWindows付属のコマンドプロンプトで、そういう作業がサクッとできるということを知った。

cdでディレクトリに移動して、dirコマンドを打つと、Linuxのllのようにそのディレクトリ(フォルダ)のファイル名一覧が表示されるのはご存知の通り。

↓こんな感じ

 C:\Users\dacelo\Desktop\test> dir

 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は XXXX-XXXX です

 C:\Users\dacelo\Desktop\test のディレクトリ

2008/10/01  12:09    <DIR>          .
2008/10/01  12:09    <DIR>          ..
2008/09/22  04:06            36,324 example1.jpg
2008/09/22  04:07            36,165 example2.jpg
2008/09/22  04:07            37,841 example3.jpg
2008/09/22  04:06            34,187 example4.jpg
2008/09/22  04:06            31,474 example5.jpg
2008/09/22  04:07            29,513 example6.jpg
2008/09/22  04:07            30,715 example7.jpg
2008/09/22  04:06            37,478 example8.jpg
2008/09/22  04:06            38,911 example9.jpg

実はこの実行結果というのは、

dir > ./filename.txt

とすると、テキストファイルとして書き出すことができるのだ!

しかしこれだと、先述のように保存日時やファイルサイズまで保存されてしまう。まあテキストにしてから一括置換で加工してもいいんだけど、/bオプションを付けるとファイル名のみのリストになる。

dir /b >./filelist2.txt

example1.jpg
example2.jpg
example3.jpg
example4.jpg
example5.jpg
example6.jpg
example7.jpg
example8.jpg
example9.jpg

できた!