Wyszukiwanie plikow po zmiennej i kopiowanie ich.
Ostatnio zmodyfikowano 2019-05-21 17:28
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. #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; }
|
|
pekfos |
» 2019-05-18 11:54:06 A problem masz z..? |
|
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 :) |
|
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. |
|
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ć :) #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; }
|
|
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. |
|
|
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 |
|
pekfos |
» 2019-05-21 17:28:18 Do tworzenia katalogów i kopiowania plików są gotowe funkcje, wystarczy poszukać. |
|
« 1 » |