Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyszukiwanie plikow po zmiennej i kopiowanie ich.

Ostatnio zmodyfikowano 2019-05-21 17:28
Autor Wiadomość
Skvaru
Temat założony przez niniejszego użytkownika
Wyszukiwanie plikow po zmiennej i kopiowanie ich.
» 2019-05-17 02:37:12
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. Mam kod który przeszukuje katalogi ale wyrzuca mi wszystkie pliki jakie się w nim znajdują. Może ktoś doradzi jak go zmienić, żeby  wyszukał pliki po zmiennej. Oto kod. Dziękuję i pozdrawiam.

C/C++
#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 = "*.*";
    path.erase( path.begin() + path.find_last_of( char( 92 ), string::npos ) + 1, path.end() );
    cout << "Przeszukiwanie sciezki: \"" << path << "\" z filtrem wyszukiwania \"" << filtr << "\"" << endl << endl;
   
    searchFile( path, filtr );
   
    cout << endl << endl << "Wcisnij enter, aby zamknac program...";
   
    cin.get();
   
    return 0;
   
}
P-174629
pekfos
» 2019-05-18 11:54:06
A problem masz z..?
P-174636
Skvaru
Temat założony przez niniejszego użytkownika
» 2019-05-18 23:31:16
Nie wiem jak zrobić, żeby wpisać np. Nowak i wyświetli mi tylko pliki zawierające w nazwie Nowak :)
P-174641
pekfos
» 2019-05-18 23:35:12
A próbowałeś czegoś w stylu *Nowak*, albo *Nowak*.*? Jak to nie zadziała, to już masz pętlę która szuka bez filtra by znaleźć katalogi - wstaw tam warunek, czy nazwa pliku zawiera szukane słowo.
P-174642
Skvaru
Temat założony przez niniejszego użytkownika
» 2019-05-19 20:38:58
Mam teraz coś takiego, filtr działa ale muszę wpisać w filtrze * przed i po szukanym słowie. Jak zrobić żeby tych * nie wpisywać :)

C/C++
#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;
   
}
P-174646
pekfos
» 2019-05-19 23:34:42
już masz pętlę która szuka bez filtra by znaleźć katalogi - wstaw tam warunek, czy nazwa pliku zawiera szukane słowo.
P-174649
Skvaru
Temat założony przez niniejszego użytkownika
» 2019-05-21 17:14:50
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
P-174662
pekfos
» 2019-05-21 17:28:18
Do tworzenia katalogów i kopiowania plików są gotowe funkcje, wystarczy poszukać.
P-174664
« 1 »
  Strona 1 z 1