Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [С++] Поиск в имени файлов


Автор: Горя 28.7.2009, 21:44
Проблема такая: есть папка, наполненная файлами без расширения.
Нужен цикл, добавляющий всем файлам расширение .htm
Файлов много, так что чем быстрее работает, тем лучше. При этом имя файла меняться не должно - только добавляться в конце расширение.

Есть идея - осуществить поиск имён файлов в указанной папке, ища любое сочетание символов (как это делается на С++?) и добавлять к этому сочетанию расширение.
Как это сделать практически, никаких мыслей smile 

Автор: Gordon 28.7.2009, 22:36
Под Windows, думаю можно использовать функции FindFirsFile, FindNextFile... А искать нужно только в самой директории или еще и вложенные просмотреть нужно?

Автор: Gordon 29.7.2009, 10:53
Вот попробуй, функция без дополнительных проверок. Если найдет хоть один файл (удовлетворяющий условию поиска, в данном случае, как я понял, это "*."), попытается его переименовать, потом ищет следующий файл, пытается переименовать его потом следующий и т.д. Если ни одного файла не найдено, вернет false, но если вернет true - это не значить (на 100%) что найденные файл (файл) переименованы...
Код

bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;
}


Использовать можно так:

Код

AddExtention("d:\\dir", ".htm");

т.е. добавить всем файлам без расширения в папке "d:\dir" расширение ".htm".
Короче, проверь работу у себя...

p.s. Думаю суть тебе понятна.

Автор: Горя 30.7.2009, 14:59
error C2601: 'AddExtention' : local function definitions are illegal

Ругается на первую строчку после bool, то есть просто на фигурную скобку.
Никаких библиотек, кроме иострима не надо? smile 

Автор: azesmcar 30.7.2009, 15:01
Цитата(Горя @  30.7.2009,  14:59 Найти цитируемый пост)
Никаких библиотек, кроме иострима не надо? 

Код

#include <string>
#include "windows.h"


а iostream зачем?

Автор: Gordon 30.7.2009, 15:16
Цитата(Горя @  30.7.2009,  15:59 Найти цитируемый пост)
error C2601: 'AddExtention' : local function definitions are illegal


Горя, ты походу просто функцию AddExtention "вставил" в какую-то другую, в main, например... Сделай её глобальной!


Автор: alexcoder 30.7.2009, 15:52
Не люби мозги. Если нужен результат, используй total commander.
Выдели файлы
нажми ctrl-M либо в меню файл-групповое переименование
во втором слева-сверху текстовом окошке ("Маска для расширения") набери html
нажми кнопку "выполнить"
все!

Автор: Горя 31.7.2009, 14:05
alexcoder, ага, и так делать каждый день, когда робот выкачивает файлы? Каждый день приходить к заказчику, говорить "Привет, тут я вам программку сделал, дайте-ка я ей подсоблю", и садиться переименовывать. Этапять, чувак smile 


Gordon, пробовал, выдавало 26 ошибок smile 
Сейчас библиотечку добавлю, вдруг, запашет.
...
Так. Компилится без проблем. Билд не выполняет, еррор (unresolved external symbol _WinMain@16) и фатал еррор, 1 unresolved externals.

Не понял, он что, вообще в паре с мейном работать не хочет? о.О

Автор: azesmcar 31.7.2009, 14:10
Цитата(Горя @  31.7.2009,  14:05 Найти цитируемый пост)
azesmcar, ага, и так делать каждый день, когда робот выкачивает файлы? Каждый день приходить к заказчику, говорить "Привет, тут я вам программку сделал, дайте-ка я ей подсоблю", и садиться переименовывать. Этапять, чувак smile 

адресатом не ошибся?

Автор: Горя 31.7.2009, 15:23
azesmcar, ошибся, извините. Вам спасибо, прошлые ошибки исчезли. Правда, новые появились  smile 

Автор: azesmcar 31.7.2009, 15:28
Цитата(Горя @  31.7.2009,  15:23 Найти цитируемый пост)
прошлые ошибки исчезли. Правда, новые появились  

Ну показывайте что у вас там, разберемся.

Автор: Горя 31.7.2009, 16:05
Цитата(Горя @  31.7.2009,  14:05 Найти цитируемый пост)
Так. Компилится без проблем. Билд не выполняет, еррор (unresolved external symbol _WinMain@16) и фатал еррор, 1 unresolved externals.

Автор: azesmcar 31.7.2009, 16:08
замени WinMain на int main() { ... }

Автор: Горя 31.7.2009, 18:50
Не, ну я не совсем лох.
Код

int main()
{
    AddExtention("c:\\dir", ".htm");

 return 0;
}

Приложение консольное.

Автор: azesmcar 31.7.2009, 19:33
Тьфу...спутал.как раз наоборот smile 
main замени на
Код

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)

или
Код

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR    lpCmdLine,
                     int       nCmdShow)

в зависимости от настройки проекта (юникод/не юникод).

Автор: Gordon 31.7.2009, 19:56
Горя, вот мой код в VS 2008:

Код

#include "stdafx.h"
#include <windows.h>
#include <string>


bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;
}


int _tmain(int argc, _TCHAR* argv[])
{    
    AddExtention("d:\\dir", ".htm");    
    
    return 0;
}


Все компилируется пез проблем! )))

Автор: Горя 31.7.2009, 22:13
Gordon, эм... Остальная часть программы сделана через инт мейн ()... Нельзя ли что-нибудь с этим сделать?
Если тупо убрать из данной программы всё, на что ругается компилятор, она попросту не работает smile 
А, да. Стыдно говорить, у меня VC++ 6,5

Автор: Gordon 31.7.2009, 22:30
Цитата(Горя @  31.7.2009,  23:13 Найти цитируемый пост)
Остальная часть программы сделана через инт мейн ()... Нельзя ли что-нибудь с этим сделать?


честно говоря, не совсем понял... Что с чем сделать? 

Сейчас я попставлю VC 6 и там попробую собрать...

Добавлено через 13 минут и 14 секунд
вот код, vc 6.0 воспринимает нормально:

Код

#include "stdafx.h"
#include <windows.h>
#include <string>

bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;
}

int main(int argc, char* argv[])
{
    AddExtention("d:\\dir", ".htm");

    system("pause");
    return 0;
}

Автор: azesmcar 31.7.2009, 22:51
Gordon

Я написал причину на предыдущей странице. Он создает Win32 приложение, а там функция main должна быть описана как WinMain, выдается ошибка линкера, в ней все сказано.

Автор: Gordon 31.7.2009, 23:40
Цитата(azesmcar @  31.7.2009,  23:51 Найти цитируемый пост)
Я написал причину на предыдущей странице. Он создает Win32 приложение, а там функция main должна быть описана как WinMain, выдается ошибка линкера, в ней все сказано.


Ну да. Только я думал ему нужно консольное приложение...

Автор: Горя 1.8.2009, 06:58
azesmcar, да, вин32 консоль. Какой вин мейн?


Gordon, вроде, он и надо...

Автор: azesmcar 1.8.2009, 08:02
Цитата(Горя @  1.8.2009,  06:58 Найти цитируемый пост)
azesmcar, да, вин32 консоль. Какой вин мейн?

На предыдущей странице написано.

Цитата(Gordon @  31.7.2009,  23:40 Найти цитируемый пост)
Ну да. Только я думал ему нужно консольное приложение... 

Да, странно что для консоли он WinMain требует, наверное настройки проекта изменены, по умолчанию не должен.

Автор: Gordon 1.8.2009, 12:28
Горя, может стоит заново создать проект и туда вставить код из старого...

Автор: Горя 2.8.2009, 13:46
Сделал новый проект. Всё равно не уверен, будет ли восприниматься в _tmain то, что работало в main ^^

Автор: Gordon 2.8.2009, 15:30
Горя, а у тебя VC 6 создает файл с _tmain? _tmain - это, вроде, юникодовый вариант main, а тебе, кажется, нужно было определиться с выбором main или WinMain...

Автор: Горя 2.8.2009, 18:40
Нет, у меня никто ничего не создаёт smile 
И нету файла заголовника stdafx, его тоже не создаёт.
Создаю я пустой проект, консольное приложение. Там ничего нет вообще, даже сипипиську надо создавать.

Автор: Горя 2.8.2009, 20:17
Нифига не понимаю. Компилятор ругается на _TCHAR. error C2061: syntax error : identifier '_TCHAR'

Автор: Горя 2.8.2009, 20:34
Заработало, вот в таком виде:
Код

#include "stdafx.h"
#include <windows.h>
#include <string>


bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;
}


int main(int argc, char* argv[])
{    
    AddExtention("c:\\dir", ".htm");    
    
    return 0;
}


Переименовал некоторые (!) файлы. В том числе один тхтшник smile 
Но это плевать, главное, что некоторые файлы без расширения расширил.
PS: переименовал 131 из 530 файлов.

Автор: Gordon 3.8.2009, 19:55
Цитата(Горя @  2.8.2009,  21:34 Найти цитируемый пост)
Переименовал некоторые (!) файлы. В том числе один тхтшник  

У меня тхтшники не переименовывает... 

Цитата(Горя @  2.8.2009,  21:34 Найти цитируемый пост)
 переименовал 131 из 530 файлов.


А все (530) файлов "находятся"? Можно сделать следующее:
если MoveFile завершается неудачей, вызвать GetLastError() чтобы получить информацию об ошибке... А там уже смотреть, почему происходит ошибка.

Автор: Горя 3.8.2009, 20:48
Gordon, был тхтшник log.txt, стал log.txt.htm

Нету больше ошибок.

Автор: Gordon 3.8.2009, 21:31
Цитата(Горя @  3.8.2009,  21:48 Найти цитируемый пост)
Нету больше ошибок.


Т.е. нету? Компилятор не выдает или работает без ошибок? Все файлы переименовывает?

Автор: Горя 3.8.2009, 21:32
При компиляции и постройке никаких ошибок не выдаёт. Переименовывает только часть.

Автор: Gordon 3.8.2009, 21:46
Цитата(Горя @  3.8.2009,  22:32 Найти цитируемый пост)
Переименовывает только часть.


Может быть, файлы с такими именами уже есть в директории? Т.е. есть файлы "1" и "1.htm", тогда переименование не произойдет.

Автор: Горя 4.8.2009, 12:24
Gordon, да нет, у меня ж не может там уже быть двух одинаковых файлов. При переименовании же имя никак не меняется, только добавляется .хтм. Нет, у меня папка полна файлов без расширения, естественно, с уникальными именами, и никаких больше там файлов нет.

Автор: Gordon 4.8.2009, 20:13
Горя, а чем файлы, которые не переименовываются, "отличаются" от тех, которые переименовываются... Может они заняты другим приложением? 

Автор: Горя 5.8.2009, 00:30
Суть такая: пользуя вгет качаю форум. На форуме страницы все в хтмле. Вгет сохраняет их как viewtopic.php@pid=***, вместо звёздочек - трёхзначное число. И таких вьютопиков пятьсот с лишком штук, но все без нормального расширения оказываются (проблемы с хостом).
То есть файлы все совершенно одинаковые, и их имена разнятся лишь на последние три цифры.

Автор: Gordon 6.8.2009, 11:59
Горя, ну попробуй вставить в код проверку на ошибки при переименовании и посмотри почуму ошибка... 

p.s. честно говоря, не знаю, может MoveFileEx поможет?

Автор: Горя 6.8.2009, 13:20
Стыдно спрашивать, но как её вставить? smile 

Автор: zim22 6.8.2009, 14:13
Цитата(Горя @  6.8.2009,  13:20 Найти цитируемый пост)
как её вставить?

CTRL+V

Автор: Горя 6.8.2009, 14:45
zim22,  smile 
Только, прикиньте, ничего не вставляется.

Автор: Gordon 6.8.2009, 15:53
Если возвращенное MoveFile значение не "true" тогда вызвать функцию GetLastError() для получения кода ошибки (может он что подскажет)...

Автор: Gordon 6.8.2009, 18:42
Можно примерно так написать:
Код

if(!MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
    std::string(dir).append("\\").append(file.cFileName).append(ext).c_str()))
{
    std::cout << "Error code: " << GetLastError() 
        << "\tFile name: " << file.cFileName << std::endl;            
}


Можно еще использовать функцию "FormatMessage", а можно посмотреть описание ошибок http://ezpc.ru/win3.shtml, вроде те...

Автор: Mad 6.8.2009, 19:08
Вот это должно работать с любыми настройками (Юнткод, Мультибайт и обычный) :
Код

#include <stdio.h>
#include <tchar.h>
#include <windows.h>

void RenameFiles(TCHAR* dir, TCHAR* newExt)
{
    TCHAR tdir[MAX_PATH];
    _stprintf_s(tdir, _T("%s/*"), dir);

    WIN32_FIND_DATA dt;
    HANDLE hFind = FindFirstFile(tdir, &dt);
    if (hFind != INVALID_HANDLE_VALUE)
    {
        do
        {
            if(!_tcschr(dt.cFileName, '.'))
            {
                TCHAR tname[MAX_PATH];
                TCHAR oname[MAX_PATH];
                _stprintf_s(tname, _T("%s/%s.%s"), dir, dt.cFileName, newExt);
                _stprintf_s(oname, _T("%s/%s"), dir, dt.cFileName);
                MoveFile(oname, tname);
            }
        } while (FindNextFile(hFind, &dt));
        FindClose(hFind);
    }
}

Использовать так :
Код

int _tmain(int argc, _TCHAR* argv[])
{
    RenameFiles(_T("g:/projects/massfilerename/testdata"), _T("html"));

    getchar();
    return 0;
}

Автор: Горя 6.8.2009, 20:03
Mad, попробую.
...
Вот получилось: error C2065: '_stprintf_s' : undeclared identifier

Gordon, во, оказывается, чтобы ваша программа у меня работала, нужен tchar.h.
Данный вами кусок работует, но не выдаёт никаких ошибок. Программка срабатывает, выпадает обычный чёрный экран и Press any key to continue.

Добавлено через 11 минут и 41 секунду
PS: хм. Вложенные папки тоже переименовал. Причём два раза (папка.htm.htm).

Автор: Mad 6.8.2009, 20:19
[quote=Горя, 6.8.2009,  19:03, post1937478]Вот получилось: error C2065: '_stprintf_s' : undeclared identifier[/quoe]
для VS < v9.0 убери "_s", при этом будет нормально компилиться и в 9.0 но с warning :
Цитата

warning C4996: '_swprintf': This function or variable may be unsafe. Consider using _swprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details

Автор: Gordon 6.8.2009, 20:40
Цитата(Горя @  6.8.2009,  21:03 Найти цитируемый пост)
Gordon, во, оказывается, чтобы ваша программа у меня работала, нужен tchar.h.

Там было два варианта, для VS 2008 (т.е. 9 версии) и для VC++ 6.0... 

Цитата(Горя @  6.8.2009,  21:03 Найти цитируемый пост)
PS: хм. Вложенные папки тоже переименовал. Причём два раза (папка.htm.htm).

Да, папки переименовывает (плохо, что файлы без расширения)... Но у меня только один раз...  smile 


Автор: Горя 6.8.2009, 22:21
Gordon, да ладно, с папок не убудет, плевать.

Mad, ваша вообще никак не работает. Ничего не переименовывает.

Добавлено через 3 минуты и 7 секунд
Gordon, удалил уже переименованные файлы, запустил заново. Папки переименовались снова Оо

Кстати, нашёл, чем они отличаются. Переименованные файлы были с именем viewtopic.php@pid=***, а те, что не переименовываются - viewtopic.php@pid=***.

Автор: Mad 7.8.2009, 00:19
Цитата(Горя @  6.8.2009,  21:21 Найти цитируемый пост)
ваша вообще никак не работает

конечно, ведь реч шла о файлах без расширения, а теперь о
Цитата(Горя @  6.8.2009,  21:21 Найти цитируемый пост)
 с именем viewtopic.php@pid=***

в денном случае расширение этих файлов "php@pid=***" (расширением файла считаеться любой набор символов после последней точки в имени файла).
В вашем конкретном случае надо заменить условие 
Код

            if(!_tcschr(dt.cFileName, '.'))

на более сложное. которое будет проверять имеет файл расширение html или нет (а не имеет расширение вообще. как сейчас)
Код

    TCHAR* t=_tcschr(dt.cFileName, _T('.'));
    if((t!=NULL)&&(_tcsclen(t)==_tcsclen(newExt))&&_tcscmp(t, newExt))

Не стоит забывать, что функции сравнения строк чуствительны к регисту (т.е это условие не позволит переименновать файл с расширением .html, но переиминует .HTML и друоие вариации).

Автор: zim22 7.8.2009, 07:48
Цитата(Mad @  7.8.2009,  00:19 Найти цитируемый пост)
Не стоит забывать, что функции сравнения строк чуствительны к регисту

перед сравнением строк можно привести их к одному регистру.

Автор: Gordon 8.8.2009, 15:45
Цитата(Горя @  6.8.2009,  23:21 Найти цитируемый пост)
Кстати, нашёл, чем они отличаются. Переименованные файлы были с именем viewtopic.php@pid=***, а те, что не переименовываются - viewtopic.php@pid=***


что-то я разницу не усмотрел...  smile  может просто усталость мешает.

Добавлено через 4 минуты и 19 секунд
Горя, а в каталоге только файлы без расширения, или еще какие есть?

Автор: Горя 8.8.2009, 21:17
Цитата(Gordon @  8.8.2009,  15:45 Найти цитируемый пост)
что-то я разницу не усмотрел... может просто усталость мешает.

Э... Что-то я ошибся.

Цитата(Gordon @  8.8.2009,  15:45 Найти цитируемый пост)
а в каталоге только файлы без расширения, или еще какие есть? 

Ну, вот, с расширениями разными, и был один .тхт (самое весёлое, что его переименовало).

Автор: Gordon 9.8.2009, 15:15
Цитата(Горя @  8.8.2009,  22:17 Найти цитируемый пост)
Э... Что-то я ошибся.


Ошибся, когда на тут писал, или в наличии различий в именах?

Автор: zim22 12.8.2009, 15:26
Горя, не лучше ли использовать готовое ПО? Какой-нибудь renamer c поддержкой регулярных выражений подойдёт.

Автор: Dov 13.8.2009, 21:51
Цитата(Mad @  7.8.2009,  00:19 Найти цитируемый пост)
Не стоит забывать, что функции сравнения строк чуствительны к регисту

для этих целей нужно юзать _tcsicmp  и ей подобные.

Автор: Горя 23.8.2009, 22:06
Mad, пофиг на регистр, всё прописью.

Gordon, в наличии разниц в именах.

zim22, некуртуазно  smile 

Автор: Gordon 26.8.2009, 20:43
Горя, так ты на чем остановился? 

Автор: Горя 3.9.2009, 20:39
Mad, ваша программа не работает в таком виде:
Код

#include <stdio.h>
#include <tchar.h>
#include <windows.h>

void RenameFiles(TCHAR* dir, TCHAR* newExt)
{
    TCHAR tdir[MAX_PATH];
    _stprintf(tdir, _T("%s/*"), dir);

    WIN32_FIND_DATA dt;
    HANDLE hFind = FindFirstFile(tdir, &dt);
    if (hFind != INVALID_HANDLE_VALUE)
    {
        do
        {
            TCHAR* t=_tcschr(dt.cFileName, _T('.'));
            if((t!=NULL)&&(_tcsclen(t)==_tcsclen(newExt))&&_tcscmp(t, newExt))
            {
                TCHAR tname[MAX_PATH];
                TCHAR oname[MAX_PATH];
                _stprintf(tname, _T("%s/%s.%s"), dir, dt.cFileName, newExt);
                _stprintf(oname, _T("%s/%s"), dir, dt.cFileName);
                MoveFile(oname, tname);
            }
        } while (FindNextFile(hFind, &dt));
        FindClose(hFind);
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    RenameFiles(_T("ñ:/dir"), _T("html"));

    getchar();
    return 0;
}

Отличия от исходного кода на прошлой странице:
1) из _stprintf_s убрана вторая _s (методом научного тыка, tprintf и tprintf_s тоже вызывают ошибку). Если заменить _stprintf_s (_stprintf в вышеуказанном коде), то переименовываются только папки.
2) заменён if(!_tcschr(dt.cFileName, '.')) на выложенный вами.

Gordon, ваш код тоже переименовывает только папки.
Код

#include "stdafx.h"
#include <windows.h>
#include <iostream.h>
#include <tchar.h>
#include <string>


bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;

        if(!MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
    std::string(dir).append("\\").append(file.cFileName).append(ext).c_str()))
{
    cout << "Error code: " << GetLastError() 
        << "\tFile name: " << file.cFileName << endl;            
}


}


int _tmain(int argc, _TCHAR* argv[])
{    
    AddExtention("c:\\dir", ".htm");

    
    return 0;
}

Автор: Gordon 4.9.2009, 18:48
Горя, если у тебя все файлы, которые нужно переименовать, заканчиваются на "*.php@pid=****", тогда можно так написать:

Код

bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.php@pid=*").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {                
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);
    
    MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
        
    return true;
}



p.s. ты еще не совсем правильно код написал, после "return true;" ничего выполняться не будет...

Автор: Горя 6.9.2009, 19:31
Всё заработало, огромное мерси всем участникам.

Автор: Gordon 9.9.2009, 16:39
Цитата(Горя @  6.9.2009,  20:31 Найти цитируемый пост)
Всё заработало


Так на чем остановлися? Где проблема была?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)