Форум программистов, компьютерный форум CyberForum.ru

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

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

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

19.05.2011, 22:36. Просмотров 1136. Ответов 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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 22:36     Переименование файлов
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

Ошибка в синтаксисе команды. Переименование файла - C++
Нужно переименовать файл 1.txt на 2.txt. Запускается без ошибок, после в консольном окне пишет &quot;Ошибка в синтаксисе команды&quot; Помогите...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.05.2011, 10:54     Переименование файлов #2
C++
1
wchar_t re[] = "123";
C++
1
wchar_t re[] = L"123";
есть rename()
Yandex
Объявления
20.05.2011, 10:54     Переименование файлов
Ответ Создать тему
Опции темы

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