9 / 9 / 10
Регистрация: 05.09.2013
Сообщений: 502
1

Найти имена подкаталогов в папке, после изменения имени любого из них вывести сообщение в виде: старое имя = новое имя

21.04.2014, 23:29. Показов 412. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте .
Мне нужно найти имена подкаталогов в папке ,а после изменения имени любого подкаталога вывести сообщение в виде:
старое имя = .... , новое имя = .... .

Имена файлов сохраняю в контейнер set.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <stdio.h>
#include <list>
#include <set>
#include <string>
#include <iterator> 
using namespace std;
 
 
 
HANDLE hndl,hFind,hFind2;
WIN32_FIND_DATA fd,FindFileData,FindFileData2;
BOOL bRet = TRUE;
BOOL bRet2 = TRUE;
 
 
set <string> dir;
set <string> dir2;
 
 
int _tmain(int argc, _TCHAR* argv[])
{  char name [10] = _T("C:\\test");
    
//инициализация дескриптора оповещаний
    hndl = FindFirstChangeNotification (_T(name), TRUE ,FILE_NOTIFY_CHANGE_DIR_NAME);
    //если дескриптор не получен
    if(hndl==INVALID_HANDLE_VALUE)
    {cout<<"Invalid Handle"<<endl;
     int error=GetLastError();
     cout<<endl<<"error="<<error;
  }
    /*поиск подкаталогов*/
   hFind=FindFirstFile(_T("C:\\test\\*.*"),&FindFileData);
 
   while(hFind!=INVALID_HANDLE_VALUE  && bRet)
    
    {
        if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
        {  
            dir.insert(FindFileData.cFileName);
            
        }
        
 
        bRet=FindNextFile(hFind,&FindFileData);
    }
//вывод подкаталогов 
 copy(dir.begin(), dir.end(), ostream_iterator<std::string>(std::cout, "\n"));
FindClose (hFind);
 
//ожидание оповещаний
    //если имя каталога изменено
  if(WaitForSingleObject (hndl,INFINITE) != WAIT_FAILED)
   {cout<<" Dir name changed!"<<endl;
  
   }
FindCloseChangeNotification (hndl);
 
 
//снова проверяем подкаталоги 
 
/*поиск подкаталогов*/
   hFind2=FindFirstFile(_T("C:\\test\\*.*"),&FindFileData2);
 
   while(hFind!=INVALID_HANDLE_VALUE  && bRet2)
    
    {
        if((FindFileData2.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
        {  
            dir2.insert(FindFileData2.cFileName);
            
        }
        
 
        bRet2=FindNextFile(hFind2,&FindFileData2);
    }
//вывод подкаталогов 
 copy(dir2.begin(), dir2.end(), ostream_iterator<std::string>(std::cout, "\n"));
FindClose (hFind2);
 
 
 
    return 0;
}
Но они у меня выводятся все .
Как сделать , чтобы выводилось в виде старое имя = .... , новое имя = .... ?
Подскажите, пожалуйста .
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2014, 23:29
Ответы с готовыми решениями:

Как после смены имени файла получить его новое имя в переменную типа string
string added = Console.ReadLine();//переменная для имени файлов формата added+number+extention ...

Выведите на экран имена подкаталогов каталога, имя которого указано в командной строке
Помогите, пожалуйста, написать в cmd программу, которая выводит на экран имена подкаталогов...

После изменения имени программы диспетчер задач выводит старое
Возникла необходимость поменять имя исполняемого файла одной проги. Сделал стандартно - просто...

Запросить у пользователя имя, фамилию и возраст. После чего вывести: “Здравствуйте [Имя] [Фамилия]”.
Здравствуйте и снова я обращаюсь за помощью задали задание: Написать код на JavaScript который...

0
21.04.2014, 23:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2014, 23:29
Помогаю со студенческими работами здесь

Переименовать папку в имя, являющееся частью имени одного из файлов, находящихся в этой папке
Прошу помощи... Имеется около тысячи папок с разными именами. В каждой папке по несколько pdf...

Выделять из имени каждого файла имя компьютера и имя учётной записи и записывать их в два файла соответственно
здравствуйте, подскажите... Есть например, 10 файлов (.txt) в названии которых написано имя...

Как в билдере получить с сервера (MySQL 5.1, имя базы "skola", имя table "info") имя столбцов и имя строк
Доброва времены суток Как в билдере получить с сервера (MySQL 5.1, имя базы &quot;skola&quot;, имя table...

Новый сайт на старое доменное имя
Здравствуйте. У меня на хостинге есть доменное имя, в папке которого куча файлов (кто-то когда-то...

Ввести фамилию, имя, отчество. Вывести свое имя в столбик
Ввести фамилию, имя, отчество. Вывести свое имя в столбик.

Строки: ввести фамилию, имя и отчество, вывести имя в столбик
Ввести фамилию, имя и отчество как одно данное строкового типа. Вывести имя в столбик.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru