Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Find C:/*.* -tiedosto!?

CoolC++ [09.10.2006 10:37:37]

#

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!?

Hara Kiri [09.10.2006 10:50:04]

#

Nuo system(); funktiot löytyvät stdlib.h -kirjastosta eli sisällytä se myös ohjelmaan.

Blaze [09.10.2006 14:31:28]

#

Elegantimpi tapa on ottaa käyttöön WinApin FindFirstFile ja FindNextFile-funktiot. Ks. esim. https://www.ohjelmointiputka.net/keskustelu/5247-oma-funktio

CoolC++ [10.10.2006 08:48:39]

#

Tuotapa näet on mielestäni yksikertaisempi jos se toimii...näin aluksi. Mutta myöhemmässä vaiheessa voisi tutustua muihin ratkaisuihin.

koo [10.10.2006 12:24:36]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta