Kodowanie DOS

0

Witam, Mam problem pewnym programem w c++.
Otóż potrzebuję wylistować pliki o określonej nazwie i określonym rozszerzeniu na danej partycji. Robię to korzystając z komendy dosowej i odpalam WinExec'kiem: WinExec (cmd.exe /c dir *.mp4 /s /b > C:\\pliki.txt);
Gdy dany plik znajduje się w katalogu, który w nazwie posiada polskie litery zaczyna zapisywać krzaczki zamiast tych liter. Jak to rozwiązać? Jak zmienić kodowanie? A może lepiej stworzyć jakieś zmienne globalne i po nich lecieć? Z góry dzięki za pomoc. pzdr!

0

przepuść wynik przez tę funkcję: OemToChar

0

Niestety rezultat taki sam.
Mam stringa o nazwie "c" z powyższą komendą czyli: cmd.exe /c dir *.mp4 /s /b > C:\\pliki.txt .
Dalej zrobiłem tak: char kon[c.size()];
memset( kon, '\0', c.size() );
c.copy(kon, c.size() );
OemToChar(c.c_str(), kon);
WinExec(kon,SW_SHOW);

Wynik taki sam... brak polskich znaków. Co robię źle? pzdr
0

Trololo, a w poleceniu masz jakieś polskie znaki? Dlaczego właśnie je traktujesz tą funkcją? I po co najpierw kopiujesz tam napis, a linijkę dalej i tak nadpisujesz?

0

Hmm, rozumiem już mój błąd. Ale kompletnie nie mam pojęcia jak przepuścić przez funkcję OemToChar() wyniki działanie polecenia z konsoli. Jakoś w funkcji WinExec()? Sorry, za takie pytanie ale nie znam się na c++, aż w takim stopniu. pzdr

0

Bartosz już ci napisał jak powinieneś to zrobić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1