2011年2月7日月曜日

REN = RENAME = ファイルやフォルダーの名前を変更する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連
○Windows XP
指定したファイルやフォルダーの名前を変更します。

o 複数のファイルに対して、ファイル名の一部分を一括変換する事も出来ます。(= フォルダーは不可)
    + 但し、変換規則に個性がありますので、気を付けて使います。
o 別のフォルダーやドライブに移動する時は、MOVE コマンドを使います。


**** 書式
--------
rename ファイル名 変更後のファイル名
もしくは
ren ファイル名 変更後のファイル名
--------

o コマンド名は、大文字小文字のどちらでも大丈夫です。
o ファイル名 = 名前を変更したいファイル名、もしくはフォルダー名です。
    + ファイルの場所とファイル名を「\」でつなぎます。
    + 今居る場所からの相対パスも指定出来ます。
    + ファイル名部分の指定には、ワイルドカード(「*」や「?」)を使用出来ます。
        + 但し、フォルダー名を変更する時は、ワイルドカードを指定出来ません。
    + このコマンドでは、「\」の代わりに UNIXの区切り文字「/」を使う事は出来ません。
o 変更後のファイル名 = ファイルの場所は指定出来ません。
    + ファイル名の指定には、ワイルドカード(「*」や「?」)を使用出来ます。

** 複数ファイルを指定する時の、ファイル名の書き方について
o 「*」は0文字以上の文字列。「*」で指定した部分は変更されません。
o 「?」は任意の1文字。こちらは、変更対象になります。
o ファイル名の先頭を変更する時の規則は、おそらく次の通りです。
    + 比較する時は、変更前のファイル名を基準にして、先頭から順に「*」が出るまで比較していきます。
        + なるべく「.」以下の拡張子を残すように比較するみたいです。
    + 変換する時は、変更後のファイル名を基準にします。
        + 文字数が変更前のファイル名と合うように、「*」や「?」の部分を変更前のファイルからコピーします。
    + 「.」に達すると、「.」の手前に文字を入れようとします。

**出来ない事と留意点
o ファイル名の先頭を単純に削除する事は出来ません。
    + 「rename a1* b*」を実行すると、a1.txtb1.txt になります。
o ファイル名の先頭を単純に追加する事も出来ません。
    + 変更後の方が置き換える文字が長い時は、足りない部分を置き換えます。
    + 「rename 私の* ミクさんの*」を実行すると、私のネギ.txtミクさんの.txt になります。
o この他、「.」を複数入れた、人工的なファイル名については、例外があるかもしれません。(= 調査していません)


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功
o 1 = エラー
    + 「指定されたファイルが見つかりません。」 = 変更前のファイル名が見つかりませんでした。
    + 「コマンドの構文が誤っています。」 = 変更後のファイル名は、パスの形では指定出来ません。もしくは、フォルダーに対して、ワイルドカード(「*」や「?」)は使用出来ません。
    + 「重複するファイル名が存在するか、またはファイルが見つかりませんでした。」 = ファイル名が重なりましたので、変換を中止します。


**** 使用例
o 「私の」で始まるテキストファイルを、「ミク」で始まるよう、変更します。
--------
ren 私の* ミク*
--------

    + コマンド名は、大文字で書く事も出来ます。
    + 置き換える文字の長さが同じ時は、素直に変換してくれます。
    + 「ren」は「rename」と書く事も出来ます。
        + Web検索すると REN が圧倒的に多かったですので、合わせてみました。

o 3文字目を「9」に変更します。
--------
ren ???* ??9*
--------

    + 但し、拡張子に達した時は、拡張子の手前の文字が変わります。
    + aa.txt は、 a3.txt になります。

o ファイル名に「ミク」を含むファイルの拡張子を、「negi」に変更します。
--------
ren c:\ミクさん\*ミク*.* *.negi
もしくは
ren c:\ミクさん\*ミク*.* *ミク*.negi
--------

    + 変換規則が良く分からない時は、下の書き方のように、変更しない部分の書き方を合わせる方法もあります。


**** 機能
o 指定したファイルやフォルダーの名前を変更します。
o 複数のファイルに対して、ファイル名の先頭や拡張子を一括変換する事も出来ます。
    + ワイルドカード(「*」や「?」)使用時、フォルダーは変換対象になりません。
    + また、フォルダーだけが見つかった時は、エラーになります。
o 複数ファイルの処理の途中でエラーになる時、それまでに変換したファイル名は戻りません。


**** メモ
o このコマンドは、デジタルカメラで写真を撮影する方達に、喜ばれているみたいです。
o このコマンド変更するのが難しい時は、バッチファイルを作る方法が簡単です。
    + 「DIR /B」コマンドで、変換したいファイル名の一覧を抜き出す事が出来ます。
    + そして、REN コマンドを発行するバッチファイルを作ってしまいます。
    + 私は AWK を使ってバッチファイルを作りましたが、FOR文で書く事も出来そうです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > REPLACE = ファイルを置き換える(= 差分コピーする)
    DEL = ERASE = ファイルを削除する
    ASSOC = ファイルの拡張子に関連付ける名前(= ファイルタイプ)を表示、変更する
(2011年2月8日変更。書式欄で表現の見直し。)