所以我希望能够自动重命名用户指定目录中的所有文件(我知道 c++ 不是执行此操作的最佳语言/工具)。
例如,一个目录当前包含数百个具有随机字符名称的文件,我希望将它们全部更改为
8 月 1 日、8 月 2 日、8 月 3 日等
编码
用户指定这样的目录
std::string directory;
std::cout << "Enter directory: ";
std::cin >> directory;
目录是这样打开的(使用dirent.h
)
DIR* pdir = NULL;
struct dirent* pent = NULL;
const char* DIRECTORY;
// convert directory string to const char
DIRECTORY = directory.c_str();
pdir = opendir(DIRECTORY);
在此处重命名指定目录中的所有文件
int i = 1;
std::string s, oldname, newname;
const char* OLDNAME, * NEWNAME;
while (pent = readdir(pdir))
{
// convert int i to str s
std::stringstream out;
out << i;
s = out.str();
oldname = pent->d_name;
newname = "August " + s;
OLDNAME = oldname.c_str();
NEWNAME = newname.c_str();
rename(OLDNAME, NEWNAME);
i++;
}
一切正常,直到 while 循环似乎什么也没做,这就是我坚持的部分。
然而,奇怪的是,这个 while 循环旨在显示目录的内容(使用与非工作循环相同的逻辑和语法)完美地工作
while (pent = readdir (pdir))
{
std::cout << pent->d_name << "\n";
}
在Win7上使用MSVS2012。
我想我会遇到的另一个问题是,在目录中,不同的文件具有不同的扩展名(这可能可以通过保存原始名称的最后 4 个字符并将其附加到新名称来解决,但不是当然,我们将不胜感激帮助)。