Переименовывание файлов, формирование строки путя

Тема в разделе "MS Visual C++", создана пользователем rudeman, 15 фев 2008.

Статус темы:
Закрыта.
  1. rudeman

    rudeman Гость

    Добрый день! Подскажите как проблемку решить..
    Суть...Есть файл лога. Я функцией проверяю нарушена структура или нет.Если да - необходимо переименовать его и создать новый.
    Ну новый создать проблем нету...
    Переименовку нашел такую...
    SHFILEOPSTRUCT op;
    op.hwnd = NULL;
    op.lpszProgressTitle = NULL;
    op.pFrom = log_path;
    op.pTo = new_log_path;
    op.wFunc = FO_MOVE;
    op.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI ;
    но... вопрос в new_log_path...
    у миня ж "испорченых" файлов может быть не 1... а несколько... некоторый набор... log1.bak, log2.bak и т.д.
    Суть... как мне сформировать строку,которая new_log_path? )
    Как слепить из "d:/log" некоего счетчика i и собственно окончания ".bak"?
    И тогда я его смогу загнать в чтот типа
    Код (Text):
    if (p_minor_status==161)
    {
    while(file!=NULL)
    {
    file = fopen(new_path, "w" );
    if (file!=NULL)
    {
    i=0;
    new_path ={очередной проверяемый путь }
    i++;
    }
    }
    SHFileOperation(&op);
    }
    т.е. пока не дойдет до файла который не может открыть(т.е. его нету), оно перебирает.. как тока доходит - переименовывает текущий лог в него...
    Буду благодарен за советы.
    Или может кто подскажет более простой вариант сделать эт?
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Эээ, ну собственно путь собирается, видимо, примерно так:
    Код (Text):
    TCHAR szPath[MAX_PATH] = _T("d:\\log");
    LPTSTR szEnd = szPath+_tcslen(szPath);
    TCHAR szNum[10];
    ...
    int i=1;
    ...
    _tcscpy(szEnd, _itot(i, szNum, 10));
    _tcscat(szEnd, _T(".bak"));
    // use szPath
    По задаче в целом - это по потребностям надо смотреть, что потом с этими файлами делать придется. Можно пользоваться GetTempFilename, можно хранить последний номер и начинать искать с него.
     
  3. rudeman

    rudeman Гость

    Спасиб, собралось )
    Сохранять не представляется возможным, так как с данными файлами будет работать не только этот код, но и другие программы. Тут именно нада определять следующий свободный путь для лога
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей