Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
#1

Переименование файлов - C++

19.05.2011, 22:36. Просмотров 1180. Ответов 1
Метки нет (Все метки)

Привет, господа! У меня вопрос по поводу переименования файлов. Коротко о моей проблеме:
нужно создать консольную прогу с ключами, в качестве ключа служит директория, если в директории есть файлы мы их переименовываем, т.е. идет проверка на наличие файлов в директории. Я использую функции FindFirstFile и FindNextFile. Вот мой код:
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// Demo.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
void DisplayErrorBox(LPTSTR lpszFunction);
int ConvertToChar(WCHAR T) {
   String ^str = "Hello";
 
   // Pin memory so GC can't move it while native function is called
   pin_ptr<const wchar_t> wch = PtrToStringChars(str);
   printf_s("%S\n", wch);
 
   // Conversion to char* :
   // Can just convert wchar_t* to char* using one of the 
   // conversion functions such as: 
   // WideCharToMultiByte()
   // wcstombs_s()
   // ... etc
   size_t convertedChars = 0;
   size_t  sizeInBytes = ((str->Length + 1) * 2);
   errno_t err = 0;
   char    *ch = (char *)malloc(sizeInBytes);
 
   err = wcstombs_s(&convertedChars, 
                    ch, sizeInBytes,
                    wch, sizeInBytes);
   if (err != 0)
      printf_s("wcstombs_s  failed!\n");
 
    printf_s("%s\n", ch);
}
 
 
 
int _tmain(int argc, TCHAR *argv[])
{
   WIN32_FIND_DATA ffd;
   LARGE_INTEGER filesize;
   TCHAR szDir[MAX_PATH];
   size_t length_of_arg;
   HANDLE hFind = INVALID_HANDLE_VALUE;
   DWORD dwError=0;
   ffd.cFileName
 
size_t convertedChars = 0;  // convert
   size_t  sizeInBytes = ((ffd->Length + 1) * 2);
   errno_t err = 0;
   char    *ch = (char *)malloc(sizeInBytes);
 
    //ConvertToChar()
   // If the directory is not specified as a command-line argument,
   // print usage.
 
   if(argc != 2)
   {
      _tprintf(TEXT("\nUsage: %s <directory name>\n"), argv[0]);
      return (-1);
   }
 
   // Check that the input path plus 3 is not longer than MAX_PATH.
   // Three characters are for the "\*" plus NULL appended below.
 
   StringCchLength(argv[1], MAX_PATH, &length_of_arg);
 
   if (length_of_arg > (MAX_PATH - 3))
   {
      _tprintf(TEXT("\nDirectory path is too long.\n"));
      return (-1);
   }
 
   //_tprintf(TEXT("\nTarget directory is %s\n\n"), argv[1]);
 
   // Prepare string for use with FindFile functions.  First, copy the
   // string to a buffer, then append '\*' to the directory name.
 
   StringCchCopy(szDir, MAX_PATH, argv[1]);
   StringCchCat(szDir, MAX_PATH, TEXT("\\*"));
 
   // Find the first file in the directory.
 
   hFind = FindFirstFile(szDir, &ffd);
 
   if (INVALID_HANDLE_VALUE == hFind)
   {
      DisplayErrorBox(TEXT("FindFirstFile"));
      return dwError;
   }
 
   // List all the files in the directory with some info about them.
 
   do
   {
      if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
      {
          //const char * re = &ffd.cFileName; 
          cout << "i'm here";
          wchar_t re[] = "123";
          //_wrename(ffd.cFileName, re);
          ffd.cFileName
         //_tprintf(TEXT("  %s   <DIR>\n"), ffd.cFileName);
      }
      else
      {
         filesize.LowPart = ffd.nFileSizeLow;
         filesize.HighPart = ffd.nFileSizeHigh;
         _tprintf(TEXT("  %s   %ld bytes\n"), ffd->cFileName, filesize.QuadPart);
         //cout << "i'm here";
      }
   }
   while (FindNextFile(hFind, &ffd) != 0);
 
   dwError = GetLastError();
   if (dwError != ERROR_NO_MORE_FILES)
   {
      DisplayErrorBox(TEXT("FindFirstFile"));
   }
 
   FindClose(hFind);
   return dwError;
}
 
 
void DisplayErrorBox(LPTSTR lpszFunction)
{
    // Retrieve the system error message for the last-error code
 
    LPVOID lpMsgBuf;
    LPVOID lpDisplayBuf;
    DWORD dw = GetLastError();
 
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dw,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );
 
    // Display the error message and clean up
 
    lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
        (lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR));
    StringCchPrintf((LPTSTR)lpDisplayBuf,
        LocalSize(lpDisplayBuf) / sizeof(TCHAR),
        TEXT("%s failed with error %d: %s"),
        lpszFunction, dw, lpMsgBuf);
    MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);
 
    LocalFree(lpMsgBuf);
    LocalFree(lpDisplayBuf);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 22:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Переименование файлов (C++):

Пакетное переименование файлов - C++
Задание: Создать папку в ней 10 файлов. Программа от пользователя получает маску, все файлы которые подходят под маску переименовать. ...

Пакетное переименование файлов - C++
Добрый день, можно с помощью с++ написать прогу которая будет переименовывать файлы указанные в папке формата Чистота_Имя-Фамилия_время.mp3...

Переименование группы файлов по шаблону - C++
Народ, создаю отдельную тему, т.к. вопрос изменился, и если кто то из новичков сталкнется с такой же проблемой и вопросом, как я, дабы...

Переименование файлов, в имени которых содержится пробел - C++
С помощью FindFirstFile и FindNextFile сделал программку, которая выводит названия всех файлов определенного типо, которые лежат в одной...

Создание/копирование/переименование/удаление файлов и директорий - C++
Есть такие задания: 1) Выполнение создания/копирование/переименования/удаления файлов; 2) Выполнение...

рефакторинг -> переименование - C++
Добрый день. Вопрос: в C# (IDE Visual Studio 2012) по нажатию F2 можно было мгновенно переименовать любую переменную под курсором. В...

1
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
20.05.2011, 10:54 #2
C++
1
wchar_t re[] = "123";
C++
1
wchar_t re[] = L"123";
есть rename()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 10:54
Привет! Вот еще темы с ответами:

Переименование типов - C++
В вопросах к экзамену попался такой вопрос: &quot;Переименование типов&quot; - что это и с чем это используют? Заранее спасибо :)

Удаление и переименование файла - C++
Помогите разобраться, почему, запуская программу в командной строке, выбирая сначала 4(переименование файла) появляется следующее: Enter...

Переименование и удаление файла - C++
В общем есть такой класс: class fileOp { private: ofstream file; char *filename; public: fileOp(); ...

Переименование и удаление файла - C++
1.Подскажите как выполняется переименование файла,находящегося в папке программы с возможностью ввода с клавиатуры старого имени и нового...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru