Wyszukiwanie pliku po zmiennej i kopiowanie.

0

Witam. Próbuje zrobić program który przeszuka katalogi i wyszuka pliki zawierające w nazwie wprowadzoną zmienną a następnie skopiuje je do nowego folderu o nazwie tej zmiennej. Podpowie ktoś jak do tego się zabrać, bo nie wiem czy się nie porywa z motyką na słońce. Pozdrawiam.

0

No to nie jest trudne, podajesz ścieżkę i używasz dir = opendir("ścieżka") .
Odpalasz pętle w której wczytujesz wszystkie nazwy plików w tym folderze readdir(dir).
W każdej iteracji wywołujesz metode która sprawdza czy w nazwie jest napis jeżeli jest to wywołujesz inną metodę np copy_file(from,to,options).

https://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c

0

C++17 ma std::filesystem a tam jest recursive_directory_iterator.

0

Mam teraz coś takiego, filtr działa ale muszę wpisać w filtrze *(gwiazdka) przed i po szukanym słowie. Jak zrobić żeby tych * nie wpisywać :)


#include <iostream>
#include <vector>
#include <string>
#include <windows.h>
#include <io.h>

using namespace std;
void searchFile( string path, string filtr )

{
    _finddata_t f;
    intptr_t r;
    string searching_filtr = path;
    searching_filtr += "*";
    if(( r = _findfirst( searching_filtr.c_str(), & f ) ) > 0 )
    {
        while( !_findnext( r, & f ) )
        {
            if( strcmp( f.name, ".." ) )
            {
                if( f.attrib & _A_SUBDIR )
                {
                    string p2 = path;
                    p2 += f.name;
                    p2 += char( 92 );
                    searchFile( p2, filtr );
                }
            }
        }
    }
    _findclose( r );
    searching_filtr = path;
    searching_filtr += filtr;
    if(( r = _findfirst( searching_filtr.c_str(), & f ) ) > 0 )

    {
        do {
            if( !( f.attrib & _A_SUBDIR ) )

            {
                cout << path << "t" << f.name << endl;
            }
        } while( !_findnext( r, & f ) );

    }
    _findclose( r );
}

int main( int size, char ** pt )
{
    setlocale( LC_CTYPE, "Polish" );
    string path = pt[ 0 ];
    string filtr; // = "*.*";
    cout << "Podaj Filtr: ";
    cin >> filtr;
    path.erase( path.begin() + path.find_last_of( char( 92 ), string::npos ) + 1, path.end() );
    cout << "Przeszukiwanie sciezki: \"" << path <<endl<< "\" z filtrem wyszukiwania \""  << filtr << "\"" << endl << endl;

    searchFile( path, filtr );

    cout << endl << endl << "Wcisnij enter, aby zamknac program...";

    cin.get();

    return 0;

}


0

Ok. Szuka mi teraz pliki. Teraz muszę zrobić tak, żeby program utworzył katalog z nazwą szukanego słowa np. "Nowak" i skopiował tam tylko te wyszukane pliki 😀

1 użytkowników online, w tym zalogowanych: 0, gości: 1