ファイルをコピーするための「名前の変更」を禁止する

アレクサンダーディアギレフ

名前別のドライブを指しているWindows 10場合、renameは実際にファイルを(少なくともプラットフォーム上で)コピーしますnewname

これを回避する方法はありますか?この場合は失敗したいのですが。

100GBのファイルを移動したいとします。可能であれば、名前を変更したいと思います。そうでない場合-独自のコピー機能を使用して、操作の進行状況をユーザーに表示したいと思います。

テッド・リンモ

新しい宛先へのハードリンクを作成してみることができます。それが失敗した場合、それは失敗します。成功した場合は、元のファイルを削除します。これがLinux(g ++ 8.3.1およびclang ++ 7.0.1)およびWindows(VS2019)のファイル(ディレクトリではない)で機能することを確認し、他のほとんどの最新のOSでも機能することを期待しています。C ++ 17(またはboost古いコンパイラの場合)が必要です。

#include <filesystem>
#include <iostream>
#include <string_view>
#include <vector>

bool my_rename(const std::string_view from, const std::string_view to,
               std::error_code& ec)
{
    // create hard link
    std::filesystem::create_hard_link(from, to, ec);

    if(ec) return false; // it failed

    // remove the original
    return std::filesystem::remove(from, ec);
}

int cppmain(const std::string_view program, std::vector<std::string_view> args) {
    if(args.size() != 2) {
        std::cerr << "USAGE: " << program << " <source> <target>\n";
        return 1;
    }

    std::error_code ec;

    if(my_rename(args[0], args[1], ec) == false) {
        std::cerr << program << ": " << ec << "\n";
        return 1;
    }

    return 0;
}

int main(int argc, char* argv[]) {
    return cppmain(argv[0], {argv + 1, argv + argc});
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コピー中にファイルの名前を変更する方法は?

分類Dev

Ansible:ファイルをコピーするときにファイルの名前を変更する方法

分類Dev

変更された名前でファイルをコピーする

分類Dev

ファイルを別のフォルダにコピーし、現在の日付で名前を変更する

分類Dev

GAMS:ループに含めるファイルの名前を変更する

分類Dev

存在するが変更日が異なる場合に、Robocopy を介してコピーされたファイルの名前を変更する方法

分類Dev

ファイルをコピー、名前変更、およびタッチするためのWin Server 2012 PowerShell4スクリプト

分類Dev

シェルを使用して複数のファイルをコピーして名前を変更する方法

分類Dev

別の場所にあるファイルをコピーして名前を変更する

分類Dev

複数のファイルの名前を変更するためのcmdコマンド

分類Dev

アイテムのコピー時にファイルの名前を変更する

分類Dev

Yeomanがテンプレートファイルをコピーした後にファイルの名前を変更する

分類Dev

コマンドプロンプトでコピー中にファイルの名前を変更する方法

分類Dev

コマンドプロンプトでコピー中にファイルの名前を変更する方法

分類Dev

Windowsで複数のファイルの名前を一括変更してコピーする

分類Dev

PowerShellが既に存在する場合は、ファイルの名前を変更してコピーします

分類Dev

Gulp-ファイルをコピーして名前を変更する

分類Dev

PythonでExcelファイルをコピーして名前を変更する

分類Dev

ファイルをコピーして名前を変更する-Gradle

分類Dev

名前を変更してファイルをコピーする

分類Dev

シェル、類似した名前のファイルをコピーする

分類Dev

ファイル名を変更するためのApplescript

分類Dev

長い名前のファイルをコピーする

分類Dev

異なるファイルから異なる列を1つの列にコピーし、同じファイル名で名前を変更する

分類Dev

名前に基づいてファイルをコピーするためのバッチスクリプト

分類Dev

ファイル名を分割し、ファイルの内容で名前を変更するPHPコード

分類Dev

括弧で囲まれた文字列を削除するためにファイルの名前を変更する

分類Dev

ファイル名ごとにプロンプトを表示してファイルの名前を変更するためのForループ

分類Dev

ファイル名ごとにプロンプトを表示してファイルの名前を変更するためのForループ

Related 関連記事

  1. 1

    コピー中にファイルの名前を変更する方法は?

  2. 2

    Ansible:ファイルをコピーするときにファイルの名前を変更する方法

  3. 3

    変更された名前でファイルをコピーする

  4. 4

    ファイルを別のフォルダにコピーし、現在の日付で名前を変更する

  5. 5

    GAMS:ループに含めるファイルの名前を変更する

  6. 6

    存在するが変更日が異なる場合に、Robocopy を介してコピーされたファイルの名前を変更する方法

  7. 7

    ファイルをコピー、名前変更、およびタッチするためのWin Server 2012 PowerShell4スクリプト

  8. 8

    シェルを使用して複数のファイルをコピーして名前を変更する方法

  9. 9

    別の場所にあるファイルをコピーして名前を変更する

  10. 10

    複数のファイルの名前を変更するためのcmdコマンド

  11. 11

    アイテムのコピー時にファイルの名前を変更する

  12. 12

    Yeomanがテンプレートファイルをコピーした後にファイルの名前を変更する

  13. 13

    コマンドプロンプトでコピー中にファイルの名前を変更する方法

  14. 14

    コマンドプロンプトでコピー中にファイルの名前を変更する方法

  15. 15

    Windowsで複数のファイルの名前を一括変更してコピーする

  16. 16

    PowerShellが既に存在する場合は、ファイルの名前を変更してコピーします

  17. 17

    Gulp-ファイルをコピーして名前を変更する

  18. 18

    PythonでExcelファイルをコピーして名前を変更する

  19. 19

    ファイルをコピーして名前を変更する-Gradle

  20. 20

    名前を変更してファイルをコピーする

  21. 21

    シェル、類似した名前のファイルをコピーする

  22. 22

    ファイル名を変更するためのApplescript

  23. 23

    長い名前のファイルをコピーする

  24. 24

    異なるファイルから異なる列を1つの列にコピーし、同じファイル名で名前を変更する

  25. 25

    名前に基づいてファイルをコピーするためのバッチスクリプト

  26. 26

    ファイル名を分割し、ファイルの内容で名前を変更するPHPコード

  27. 27

    括弧で囲まれた文字列を削除するためにファイルの名前を変更する

  28. 28

    ファイル名ごとにプロンプトを表示してファイルの名前を変更するためのForループ

  29. 29

    ファイル名ごとにプロンプトを表示してファイルの名前を変更するためのForループ

ホットタグ

アーカイブ