21xrx.com
2024-12-28 06:49:56 Saturday
登录
文章检索 我的文章 写文章
C++ 批量修改文件名
2023-06-25 10:17:44 深夜i     --     --
C++ 批量 修改 文件名

如果你需要一次修改多个文件的文件名,将它们一个个手动操作将会非常浪费时间。然而,C++ 可以帮你轻松批量修改文件名。

下面是一个简单的 C++ 程序,可以将一个目录内的所有文件名后缀从 `.txt` 改为 `.md`:


#include <iostream>

#include <fstream>

#include <string>

#include <filesystem>

namespace fs = std::filesystem;

int main(int argc, char* argv[])

{

  if (argc < 2) {

    std::cout << "Usage: " << argv[0] << " <dir>\n";

    return 1;

  }

  fs::path dir_path(argv[1]);

  if (!fs::exists(dir_path) || !fs::is_directory(dir_path)) {

    std::cout << "Invalid directory!\n";

    return 1;

  }

  for (auto& entry : fs::directory_iterator(dir_path)) {

    if (entry.is_regular_file() && entry.path().extension() == ".txt") {

      auto new_path = entry.path().replace_extension(".md");

      fs::rename(entry.path(), new_path);

    }

  }

  return 0;

}

这个程序使用了 C++17 的文件系统库。首先,程序会检查命令行参数,如果没有传递目录路径,则会提示使用方法。然后,程序会检查目录是否存在且合法,若不合法也会提示错误。

接下来,程序会遍历目录内的所有文件。对于每一个正常文件,程序会检查其后缀是否为 `.txt`,如果是,将文件名后缀修改为 `.md`,并使用 `fs::rename` 函数修改文件名。最后,程序运行完毕,返回 0 表示执行成功。

如果你需要修改的文件名后缀不是 `.txt`,只需在程序中将相应的后缀修改即可,例如改为 `.zip`:


if (entry.is_regular_file() && entry.path().extension() == ".zip") {

  auto new_path = entry.path().replace_extension(".md");

  fs::rename(entry.path(), new_path);

}

总之,C++ 的文件系统库可以帮助你轻松批量修改文件名。只需编写简单的程序,就可以让这件繁琐的工作变得十分简单。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复