Eli miten C++:salla tehdään yksinkertainen find -functio, joka etsii tiettyä tiedostoa halutusta asemasta!?
Ise olen yrittännyt tätä seuraavaa koodia, mutta se ei toimi tai en ole onnistunnut kyseisessä:
#include <iostream.h> int main (void) { cout << "Etsimme kyseisen test.bat -teidoston koneelta\n"; system ("pause"); system ("C:\>SET|FIND /I "test.bat""); return 0; }
Normaalisti komentokehotteessa kyseinen toimii, jos laittaa "Temp" -niin se löytää kansion, mutta jos haluaa löytää tiedoston niin se ei löydä edes komentokehotteessa ja sitten kun yritän tätä C++:salla niin kumpikaan ei onnistu, missä vika!?
Nuo system(); funktiot löytyvät stdlib.h -kirjastosta eli sisällytä se myös ohjelmaan.
Elegantimpi tapa on ottaa käyttöön WinApin FindFirstFile ja FindNextFile-funktiot. Ks. esim. https://www.ohjelmointiputka.net/keskustelu/5247-oma-funktio
Tuotapa näet on mielestäni yksikertaisempi jos se toimii...näin aluksi. Mutta myöhemmässä vaiheessa voisi tutustua muihin ratkaisuihin.
Mistähän tässäkin on lopulta kysymys?
Komento C:\>SET|FIND /I "test.bat"
ei etsi mitään tiedostoja. Se tulostaa kaikki ympäristömuuttujat ja etsii tulostuksesta tekstiä test.bat
. Paitsi jos kehote C:\>
on mukana komennossa...
Tässä vähän paikkauksia sekä DOS-komentoihin että C++:aan:
#include <iostream> #include <ostream> #include <cstdlib> int main() { std::cout << "Etsitään\n"; // std::system("PAUSE"); std::system("DIR C:\\ /S /B | FIND /I \"TEST.BAT\""); }
Homma hoituu WinAPI-funktioillakin, mutta niitä kannattaa käyttää vasta, kun muut perusjutut alkaa olla hallussa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.