2011年2月8日火曜日

MOVE = ファイルやフォルダーを移動する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連
○Windows XP
指定したファイルやフォルダーを移動します。

o 同じフォルダーにある複数のファイルを、コマンド1つで移動させる事が出来ます。
o 移動先に別の名前を指定する事で、ファイル名やフォルダー名を変更する事も出来ます。
    + もっとも、名前変更だけでしたら、REN (= RENAME) コマンドの方が便利です。
o このコマンドは、環境変数 COPYCMD で指定した値を、オプションとして取り込みます。
    + ですので、予期しない動作をさせたくない時は、オプションを指定する、もしくは COPY コマンドなどへの影響が無い事を確認して、環境変数 COPYCMD の値を空にする事をおすすめします。


**** 書式
--------
move [ /y | /-y ] ファイル名 移動先の場所
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o /y = 上書きする時に、確認メッセージを表示しません。
o /-y = 上書きする時に、確認メッセージを表示します。
    + /y オプションと一緒に指定すると、エラーになります。
    + これらのオプション指定が無い時は、環境変数 COPYCMD の値に依存します。
    + 環境変数 COPYCMD の値が「/Y」もしくは「/y」の時、上書きする時に確認メッセージを表示しません。
    + 環境変数 COPYCMD の値が上記以外、もしくは設定されていない時は、確認メッセージを表示します。
o ファイル名 = 移動したいファイル名、もしくはフォルダー名です。
    + ファイルの場所とファイル名を「\」でつなぎます。
    + 今居る場所からの相対パスも指定出来ます。
    + ファイル名部分の指定には、ワイルドカード(「*」や「?」)を使用出来ます。
        + 但し、フォルダーを移動する時は、ワイルドカードを指定出来ません。
    + このコマンドでは、「\」の代わりに UNIXの区切り文字「/」を使う事も出来ます。
o 移動先の場所 = 移動先のフォルダー、もしくは移動後のファイル名のパスを指定します。
    + ファイル名まで指定すると、ファイルの名前を変更する事が出来ます。
    + フォルダーの移動の場合は、パスの最後が存在しない名前の時、フォルダーの名前が変わります。
    + パスを書かずにファイル名やフォルダー名だけ指定した時、カレントディレクトリに移動します。
    + 「\」の代わりに UNIXの区切り文字「/」を使う事も出来ます。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功。「上書きしますか」質問の後に n を選択した時も、成功になります。
o 1 = エラー
    + 「重複するファイル名が存在するか、またはファイルが
見つかりませんでした。」 = フォルダーに対して、ワイルドカード(「*」や「?」)は使用出来ません。
    + 「指定されたパスが見つかりません。」 = 移動するファイルやフォルダーが見つかりませんでした。もしくは、移動先のフォルダーが見つかりませんでした。
    + 「指定されたドライブが見つかりません。」 = パスの先頭に書いたドライブ名が、存在しませんでした。
    + 「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」 = ファイルの無い所では、ワイルドカードは使用出来ません。
    + 「デバイスの準備ができていません。」 = CD-ROM や DVD などが入っていません。
    + 「コマンドの構文が誤っています。」 = オプションの指定が間違っています。( /Y と /-Y の同時指定など)

**** 使用例
o 「私の」で始まる名前のファイルを c:\ミクさん フォルダーに移動します。
--------
move 私の* c:\ミクさん
--------

    + コマンド名は、大文字で書く事も出来ます。

o 全て上書きしたい時。 /Y オプションを付けます。
--------
move /y 私の* c:\ミクさん
--------


o 上書きしたくない時の例
    + 直接指定する事は出来ませんので、FOR 文を使うなどの工夫をします。
    + バッチファイルの場合(= %を2つにします)
--------
for %%F in (私の*) do if not exist "c:\ミクさん\%%~nxF" move "%%F" "c:\ミクさん\%%~nxF"
--------

    + 「私の*」の部分に空白を入れる場合は「"」で括ります。例:「"mikusan no *"」
    + コマンドプロンプト画面に直接打つ場合
--------
for %F in (私の*) do if not exist "c:\ミクさん\%~nxF" move "%F" "c:\ミクさん\%~nxF"
--------



**** 機能
o 指定したファイルやフォルダーを移動します。
o 移動先が現在の場所(= カレントディレクトリ)以外の時は、パスを指定する必要があります。
o 移動先に別の名前を指定する事で、ファイル名やフォルダー名を変更する事も出来ます。
    + フォルダー名の変更の場合は、存在しない名前を指定する必要があります。
    + もっとも、ファイル名やフォルダー名だけを変更する時は、REN(= RENAME) コマンドの方が便利です。
o 同じフォルダーにある複数のファイルを、同時に移動する事が出来ます。
    + ワイルドカード(「*」や「?」)を使用します。
    + ワイルドカード使用時、フォルダーは移動対象になりません。
    + また、フォルダーだけが移動対象として見つかった時は、エラーになります。
o オプションを指定しない時、既定では画面上で「上書きしますか?」と質問します。
    + 但し、環境変数 COPYCMD に /Y を指定していると、質問せずに上書きします。
o /Y オプションを使うと、上書き時に質問するかどうかを指定出来ます。
o /Y オプションや /-Y オプションを使うと、上書き時に質問するかどうかを指定出来ます。

** MOVEコマンドの対象にならないファイル
o MOVEコマンドは、次の属性を持つファイルを、検索対象から「除外」します。
    + システムファイル属性
    + 隠しファイル属性
o これらのファイルの属性変更は、ATTRIB コマンドで行う事が出来ます。
o また、隠しファイル属性は、ファイルのプロパティで設定する事も出来ます。


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


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > REN = ファイルやフォルダーの名前を変更する
    REPLACE = ファイルを置き換える(= 差分コピーする)
    DEL = ERASE = ファイルを削除する
(2011年2月20日追加。機能欄にて、MOVEコマンドの対象にならないファイル)