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.