MoveFile 関数 (winbase.h)

既存のファイルまたはディレクトリ (その子を含む) を移動します。

ファイルの移動方法を指定するには、 MoveFileEx または MoveFileWithProgress 関数を 使用します。

この操作をトランザクション操作として実行するには、 MoveFileTransacted 関数を使用します。

構文

BOOL MoveFile(
  [in] LPCTSTR lpExistingFileName,
  [in] LPCTSTR lpNewFileName
);

パラメーター

[in] lpExistingFileName

ローカル コンピューター上のファイルまたはディレクトリの現在の名前。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付加します。 詳細については、「ファイル、パス、および名前空間の名前付け」を参照してください。

ヒント

Windows 10 バージョン 1607 以降では、"\\?\" を前もって指定しなくても、MAX_PATHの制限を削除するようにオプトインできます。 詳細については、「 名前付けファイル、パス、および名前空間 」の「パスの最大長制限」セクションを参照してください。

[in] lpNewFileName

ファイルまたはディレクトリの新しい名前。 新しい名前が存在してはいけません。 新しいファイルは、別のファイル システムまたはドライブ上に配置できますが、 新しいディレクトリは同じドライブ上に配置する必要があります。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付加します。 詳細については、「ファイル、パス、および名前空間の名前付け」を参照してください。

ヒント

Windows 10 バージョン 1607 以降では、"\\?\" を前もって指定しなくても、MAX_PATHの制限を削除するようにオプトインできます。 詳細については、「 名前付けファイル、パス、および名前空間 」の「パスの最大長制限」セクションを参照してください。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

MoveFile 関数は、同じディレクトリ内またはディレクトリ間で、ファイルまたはディレクトリ (その子を含む) を移動 (名前変更) します。 1 つの注意点は、移動先が別のボリュームにある場合、ディレクトリの移動時に MoveFile 関数が失敗することです。

ファイルがボリューム間で移動された場合、 MoveFile はファイルを含むセキュリティ記述子を移動しません。 ファイルには、宛先ディレクトリの既定のセキュリティ記述子が割り当てられます。

MoveFile 関数は、リンク追跡サービスを使用して操作を調整するため、リンク ソースを移動時に追跡できます。

Windows 8とWindows Server 2012では、この関数は次のテクノロジでサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 Transparent Failover (TFO) コメントを表示する
スケールアウト ファイル共有を含む SMB 3.0 (SO) コメントを表示する
クラスター共有ボリューム ファイル システム (CsvFS) はい
Resilient File System (ReFS) はい
 

SMB 3.0 では、継続的な可用性機能を備えたファイル共有上の代替データ ストリームの名前変更はサポートされていません。

要件

   
サポートされている最小のクライアント Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

CopyFile

ファイル管理機能

MoveFileEx

MoveFileTransacted

MoveFileWithProgress