使用C ++删除目录中的所有.txt

时间:2011-08-04 01:49:50

标签: c++

我正在尝试使用C ++删除目录中的所有.txt文件。

到现在为止,我正在使用这个 - >除去( “aa.txt文件”);

但是现在我有更多要删除的文件,如果我可以删除所有.txt文件会更容易。

基本上我想在批处理中使用类似的东西 - > del * .txt

谢谢!

3 个答案:

答案 0 :(得分:6)

std::string command = "del /Q ";
std::string path = "path\\directory\\*.txt";
system(command.append(path).c_str());

悄悄删除提供的目录中的所有文件。如果未提供/ Q属性,则它将确认删除每个文件。

我假设您正在运行Windows。没有任何标签或评论让我相信。

答案 1 :(得分:5)

您可以使用boost文件系统执行此操作。

#include <boost/filesystem.hpp> 
namespace fs = boost::filesystem;

int _tmain(int argc, _TCHAR* argv[])
{
    fs::path p("path\\directory");
    if(fs::exists(p) && fs::is_directory(p))
    {
        fs::directory_iterator end;
        for(fs::directory_iterator it(p); it != end; ++it)
        {
            try
            {
                if(fs::is_regular_file(it->status()) && (it->path().extension().compare(".txt") == 0))
                {
                    fs::remove(it->path());
                }
            }
            catch(const std::exception &ex)
            {
                ex;
            }
        }
    }
}

此版本区分大小写 - &gt; * it-&gt; path()。extension()。compare(“。txt”)== 0

BR 马尔钦

答案 2 :(得分:0)

我已经测试了此解决方案,并且可以正常工作。我假设您正在运行Windows。

#include <stdlib.h>
#include <string.h>
// #include <iostream>

using namespace std;
int main() {
    char extension[10] = "txt", cmd[100] = "rm path\\to\\directory\\*.";

    // cout << "ENTER EXTENSION OF FILES : \n";
    // cin >> extension;
    strcat(cmd, extension);
    system(cmd);
    return 0;
}